[英]What is the difference between **pointer and &pointer as function parameter?
#include <stdio.h>
void initialize(int **);
void control(int **);
int main(void){
int *pointer;
printf("%p\n",pointer);
initialize(&pointer);
printf("%p\n",pointer);
control(&pointer);
return 0;
}
void initialize(int **point){
printf("%p\n",point);
*point = NULL;
printf("%p\n",point);
}
void control(int **point){
if(*point == NULL)
printf("hi");
else
printf("good bye");
}
There is no problem in the code above, but when I change it like this:上面的代码没有问题,但是当我这样改的时候:
int **pointer;
printf("%p\n",pointer);
initialize(pointer);
printf("%p\n",pointer);
control(pointer);
It doesn't work properly.它不能正常工作。 I wonder why it doesn't work same as &pointer .
我想知道为什么它与&pointer 不同。
我试过你的代码,它给出了分段错误,这应该是由空指针引起的,当空指针的指针在 initialize() 函数中被赋值为 null 时。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.