c - 这个简单的双指针示例中发生了什么

标签 c pointers malloc

我有以下示例代码:

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 作为参数;我不明白为什么 &ptrint **

我希望做这样的事情:

int **ptr2;
doAlloc(ptr2);

ptr2 的“地址”如何被视为作为双指针传递的有效值?

非常感谢任何帮助!谢谢。

最佳答案

很简单,如果你有

int a;

然后

&a

类型为int*

在您的情况下,您必须为所有事件考虑一个额外的指针。

关于c - 这个简单的双指针示例中发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895085/

相关文章:

c++ - std::unordered_map 如何释放使用 malloc 创建的结构。是否需要对 map 进行 2 次查询?

c - 程序中的未知错误

代码不显示返回值

c++ - 一个类应该使用函数指针调用另一个类的方法

java - 我想找到图像的坐标

c - malloc 消耗远小于进程本身

c - C 中的双重自由或腐败 3d 数组

c++ - 使用 C/C++ 从已解析的文本中解析名词短语

c - 它是 C 语言中的通用堆栈数据结构链表实现吗?

C 指针未正确分配