首先,初始化变量的原因,是因为一个变量光定义的话,只会为它分配一个内存空间,但是具体的数值是不确定的,如果你不初始化(也就是赋初值),你拿什么去参与的运算操作,不得而知,运算的结果肯定要有问题。
例子1:可以正确运行的
void change(int *x)
{
printf("%d",x);
*x=2;
}
int main() {
int x;
change(&x);
printf(“x = %d\n”,x);
}
输出结果为2;达到预期。
例子2:程序运行过程中,报错Thread1…
void change(int **y)
{
**y=(int)2;
printf("%d",**y);
//这里,y是一个地址1,1里装的是另一个地址2,2对应的是一个int型的变量。
}
int main() {
int *x;
change(&x);//取指针的地址,即指向指针的指针。
printf(“x = %d\n”,*x);
}
但是若在int x;后,加上:x=(int)malloc(sizeof(int));进行初始化操作,达到预期结果,输出为2。