我想使用双指针。但是,请告诉我我在这里做错了什么。调用函数后,值 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/