繁体   English   中英

用C语言打印动态数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM