我用 C 语言编写了一个带有悬空指针的程序。
#include<stdio.h>
int *func(void)
{
int num;
num = 100;
return #
}
int func1(void)
{
int x,y,z;
scanf("%d %d",&y,&z);
x=y+z;
return x;
}
int main(void)
{
int *a = func();
int b;
b = func1();
printf("%d\n",*a);
return 0;
}
即使指针悬空,我的输出也为 100 。
我对上面的函数做了一个改动func1()
。现在我在编译时分配值,而不是像上面的程序那样从标准输入中获取y
值。z
我重新定义func1()
如下:
int func1(void)
{
int x,y,z;
y=100;
z=100;
x=y+z;
return x;
}
现在输出是 200。
有人可以解释一下上述两个输出的原因吗?