【发布时间】:2014-01-28 18:50:51
【问题描述】:
#include <stdio.h>
int *call();
int main() {
int *ptr, a = 5;
ptr = call();
printf("%d\n", a);
printf("%d", *ptr);
return 0;
}
int * call() {
int x = 25;
++x;
return &x;
}
上面的代码在打印a的值后输出垃圾值。 但是如果我删除 printf("%d\n",a);语句然后它输出 x 的值。 请解释... 根据悬空指针的概念,输出应该是垃圾值。 我正在使用 gcc 编译器。
【问题讨论】:
-
貌似
x的值,其实是垃圾。 -
它总是打印 x 的值为 26...如果我删除 printf 语句(printf("%d\n",a);)。
标签: c