使用calloc和数组并返回指针的麻烦

作为参考,这是我的任务的第二部分:

int* generateFibonacci(int size);

此函数将输入一个称为size的整数作为输入。 size变量中包含的值将表示要放入数组的Fibonacci序列中的数量。 该函数将使用calloc创建此大小的数组,然后使用Fibonacci序列中的size编号填充数组,从11 。 当数组完成时,函数将返回指向它的指针。

当我在第8行中收到错误warning: assignment makes and integer from pointer without a cast时,我遇到了麻烦:在warning: assignment makes and integer from pointer without a cast 。 我得到的另一个错误是在第19行“ warning: return makes pointer from integer without a cast ”。

所以我的问题是,我怎么想设置calloc来使用一个大小来自用户的数组,然后返回一个指向它的指针?

 #include  #include  int* generateFibonacci(int size) { int i, array[size]; array[size]=(int*)calloc(size, sizeof(int)); array[0]=0; array[1]=1; for(i = 2; i < size+1; i++) array[i] = array[i-2] + array[i-1]; return *array; } void printHistogram (int array[], int size) { int i, j; for(i=0; i <= size; ++i) { for(j=0; j < array[i]; j++) { printf("*"); } printf("\n"); } } int main(void) { int array[100], size; printf("how big will your Fibionacci number be? "); scanf("%i", &size); generateFibonacci(size); printHistogram(array, size); return 0; } 

我怎么想设置calloc来使用一个大小来自用户的数组,然后返回一个指向它的指针?

对于int的一维数组*使用printf()scanf()

 int *array = {0}; size_t size = 0; printf("Enter order of array"); scanf("%d", &size); array = malloc(size);//create memory with space for "size" elements if(array){//do other stuff} 

但是你的例子还不清楚,如果你真的打算使用2D数组那么注释……

如评论中所述,您已创建了一个int数组,然后尝试为其创建内存。

 int i, array[size]; ... array[size]=(int*)calloc(size, sizeof(int));//wrong 

在创建时, array不需要内存。 内存在堆栈上自动创建。
如果你想要一个int数组。 然后你可以这样做:

 int *array[size]; //create a pointer to int [] 

有了这个,你可以用这种方式创建一个数组数组(在概念上):

 for(i=0;i 

现在,你基本上有一个size x size 2D数组int 。 可以通过以下方式为其分配值:

 for(i=0;i 

顺便说一下,根据需要调整calloc()语句的参数, 但请注意 ,不需要输出其输出。

关于return语句 ,你的函数是原型,返回一个int *

 int* generateFibonacci(int size){...} //requires a return of int * 

如果您决定使用1D数组,即int *array={0} (要求您分配内存),则返回:

 return array;//array is already a `int *`, just return it. 

如果您正在使用2D数组,那么要返回一个int * ,您必须决定要返回的数组的哪个size元素:

 return array[i];//where `i` can be any index value, from 0 to size-1