【发布时间】:2011-07-14 10:13:04
【问题描述】:
我用 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。
有人可以解释一下上述两个输出的原因吗?
【问题讨论】:
-
有一个代码按钮可以用来制作整个部分的代码,而不是对每一行使用代码 sn-ps。
-
对于第一个版本,哪些输入会产生 100 的结果?
标签: c pointers dangling-pointer