传递双指针作为参数

CB4*_*CB4 3 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; 
}
Run Code Online (Sandbox Code Playgroud)

chq*_*lie 6

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

void function(int ***num) {
    ***num = 30; 
}
Run Code Online (Sandbox Code Playgroud)