c-如何从函数返回数组并遍历它?

#include <iostream>

int* fib(int);

int main()
{
    int count;
    std::cout<<"enter number up to which fibonacci series is to be printed"<<std::endl;
    std::cin>>count;
    int *p=new int[count];
    p=fib(count);
    int i;
    for(i<0;i<=count;i++)
        std::cout<<p[i]<<std::endl;
    return 0;
}

int* fib(int d)
{
    int *ar=new int[d];
    int p=-1,q=1,r;
    int j;
    for(j=0;j<=d;j++)
    {
        r=p+q;
        ar[j]=r;
        p=q;
        q=r;
    }
    return ar;
    delete ar;
}

为什么我不能以这种方式打印整个Fibonacci系列阵列?

解决方法:

您的代码有几个问题

for(i<0;i<=count;i++)

实际上应该是

for(i=0;i<count;i++)

for(j=0;j<=d;j++)

必读

for(j=0;j<d;j++)

并删除线

delete ar;

因为它在return语句后没有任何作用.另外,您可以摆脱实例化

int *p=new int[count];

在main()中,因为这也是在您的fib函数中完成的.就目前而言,您泄漏了刚分配的内存.

上一篇:CF446C DZY Loves Fibonacci Numbers


下一篇:如何在Python 3.x中强制整数输入?