以下程序的输出是什么?本地指针变量
int *call();
void main() {
int *ptr = call();
printf("%d : %u",*ptr,ptr);
clrscr();
printf("%d",*ptr);
}
int *call() {
int x = 25;
++x;
//printf("%d : %u",x,&x);
return &x;
}
期望输出:垃圾值
实际输出:26 #someaddr
由于x是一个局部变量它的范围在函数调用之内结束。我发现这个代码是悬挂指针的例子。
由于您提到的原因,该程序显示未定义的行为。你的问题是什么?你期待什么,你有什么。 –
当然有:“ptr = call();”?不是“ptr = call”吗? – danihp
实际上,在这种情况下,26是垃圾值。 – mouviciel