我想用双指针.但是,请告诉我这里做错了什么.调用函数后,值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)
你实际上是传递一个三重的间接整数来起作用function.&ptr2ptr指向整数指针的指针的地址.function在调用之前你没有定义也没有声明main.它在C99中是不正确的,但在ANSI C中受支持并隐式声明function可以获取任何类型的任意数量的参数并返回int.您应该移动function之前的定义main并将其更改为:
void function(int ***num) {
***num = 30;
}
Run Code Online (Sandbox Code Playgroud)