我有以下示例代码:
void doAlloc(int **p) {
*p = (int *)malloc(sizeof(int));
**p = 80;
}
int main() {
int *ptr2;
doAlloc(&ptr2);
printf("%d\n", *ptr2);
free(ptr2);
}
如果我没理解错的话,ptr2
是一个指针变量,&ptr2
是那个指针变量在内存中的“地址”。
我的问题是,因为 doAlloc
接受双指针 int **p
作为参数;我不明白为什么 &ptr
是 int **
。
我希望做这样的事情:
int **ptr2;
doAlloc(ptr2);
ptr2
的“地址”如何被视为作为双指针传递的有效值?
非常感谢任何帮助!谢谢。
最佳答案
很简单,如果你有
int a;
然后
&a
类型为int*
在您的情况下,您必须为所有事件考虑一个额外的指针。
关于c - 这个简单的双指针示例中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895085/