我的问题是关于动态内存分配和指针算术的。我有一个在主函数中调用的函数,它应将n个long填充到数组中,并动态地用Fibonacci序列填充它们。我的功能在下面,但似乎没有给我正确的输出。
long* make_fib_array(long n){
int i;
long *fib;
fib = (long*)malloc(sizeof(long)*n);
if (fib == NULL){
printf("ERROR: Out of memory\n");
return NULL;}
*fib = 0;
*(fib +1) = 1;
for (i=2;i<n;i++);{
*(fib +i) = *(fib + (i-1)) + *(fib + (i-2));}
for(i=0;i<n;i++){
printf("%ld\n",*(fib + i));}
return fib;}
使用值为0和1的值可以很好地打印,但是此后的值非常大且不期望。我怀疑这可以解决我的指针算法问题,但是我不确定它是什么。
答案 0 :(得分:1)
只需在循环括号后删除;
:
来自
for (i=2;i<n;i++);{
到
for (i=2;i<n;i++) {