[英]print dynamic array in c language
我尝试从用户那里获取数字,这是我的职责,
我的函数将arr作为指针并将其设置为新数组,并返回我要打印的数字的计数器。
但是当我尝试打印数组时,我注意到了一个错误
int GetNumber(int *arr)
{
int n,i=0;
int *temp;
temp = (int*)calloc(1,sizeof(int));
assert(temp);
scanf("%d",&n);
while(n != -1)
{
i++;
temp = (int*) realloc(temp,i*sizeof(int));
assert(temp);
temp[i-1] = n;
scanf("%d",&n);
}
arr = temp;
return i;
}
问题是您修改了局部变量。
在C语言中,所有参数都按“按值”传递,这意味着将值复制到函数的作用域中。 您的指针arr
也会发生这种情况。 如果您在函数中修改arr
,将永远不会影响调用者。
解决方案是传递一个指向您要修改的内容的指针,因此您的签名应如下所示:
int GetNumber(int **arr)
仍然,该指针按值传递,但它指向您要修改的另一个指针。
附带说明一下,不要在C中使用void *
。它可以隐式转换为任何指针类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.