c - 传递双指针作为参数

标签 c

我想使用双指针。但是,请告诉我我在这里做错了什么。调用函数后,值 n 不会更新。我期待 30,但仍然看到 10。

int main(int argc, char **argv) {
    int n = 10;
    int *ptr = &n;
    int **ptr2ptr = &ptr;
    function(&ptr2ptr);
    printf("%d", n);
    return 0;
}

void function(int *num) {
    *num = 30; 
}

最佳答案

您实际上是将一个三重间接整数传递给函数 function&ptr2ptr 是指向整数指针的指针的地址。在从 main 调用它之前,您没有定义或声明 function。它在 C99 中是不正确的,但在 ANSI C 中受支持并隐式声明 function 以获取任意数量的任意类型的参数并返回 int。您应该将 function 的定义移到 main 之前并将其更改为:

void function(int ***num) {
    ***num = 30; 
}

关于c - 传递双指针作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231110/

相关文章:

代码在所需的迭代次数之前终止并显示消息 "Killed"

c - Eclipse CDT 中的预处理器宏文件是什么?

c - 如何检查点 (x,y) 是否在笛卡尔坐标系中的多边形内?

c - 如何在C中对单个数字的所有位进行异或?

c - 如何使用 mruby 将 C 字符串传递给 Ruby 方法?

使用 strncpy 复制字符串会导致输出中出现垃圾值

c - 是否存在将文本文件转换为字符串文字作为构建步骤的任何内容?

C:线程之间的Fifo,写入和读取字符串

c - 从文本文件中读取 double (使用 C/Visual Studio)

python - Cython cdef 没有速度增加