c - 在 C 中的单独函数中初始化指针

标签 c pointers initializing

我需要做一件简单的事情,我曾经在 Java 中做过很多次,但我被困在 C 中(纯 C,而不是 C++)。情况是这样的:

int *a;

void initArray( int *arr )
{
    arr = malloc( sizeof( int )  * SIZE );
}

int main()
{
    initArray( a );
    // a is NULL here! what to do?!
    return 0;
}

我有一些“初始化”函数,它应该将给定的指针分配给一些已分配的数据(无关紧要)。我应该如何给出一个指向函数的指针,以便修改该指针,然后可以在代码中进一步使用(在该函数调用返回之后)?

最佳答案

你需要调整*a指针,这意味着你需要传递一个指向*a的指针。你这样做:

int *a;

void initArray( int **arr )
{
    *arr = malloc( sizeof( int )  * SIZE );
}

int main()
{
    initArray( &a );
    return 0;
}

关于c - 在 C 中的单独函数中初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2486235/

相关文章:

java - 在for循环中初始化变量

c - 在 C 中的单独函数中初始化指针

c - C甚至有 "pass by reference"吗?

C: 复制一个 char *指针到另一个

c - 应用程序因指针、头文件和结构数组而崩溃

c - 通过尝试访问大于 C 中数组维度的位置来访问数组后面的变量

c++ - 从函数 C++ 正确传递指针

Java 定义或初始化类的属性

c - 防止控制台窗口在 Visual Studio C/C++ 控制台应用程序上关闭

c - 函数调用的参数过多,预​​期为单个参数 'combinedValues',有 2 个参数