使用calloc和数组并返回指针的麻烦
作为参考,这是我的任务的第二部分:
int* generateFibonacci(int size);
此函数将输入一个称为size的整数作为输入。 size变量中包含的值将表示要放入数组的Fibonacci序列中的数量。 该函数将使用
calloc
创建此大小的数组,然后使用Fibonacci序列中的size
编号填充数组,从1
和1
。 当数组完成时,函数将返回指向它的指针。
当我在第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