所以我开始用C编程。现在我有一个指针问题:
int * diff(){
int array[2] = {1,2};
return array;
}
int main(int argc, char const *argv[]) {
int *p;
p = diff();
printf("%d\n", *(p));
printf("%d\n", *(p));
return 0;
}
所以启动程序后。我的终端显示以下内容:
1
0
那么为什么* p的价值会发生变化?
答案 0 :(得分:1)
程序的行为是未定义。
array
具有自动存储持续时间(非正式地,将其视为"本地变量"),并取消引用指向它的指针返回main
语言是不允许的。
(我们称之为悬空指针)。