通过使用C中的指针调用变量后更改值

时间:2017-04-06 18:39:59

标签: c pointers

所以我开始用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的价值会发生变化?

1 个答案:

答案 0 :(得分:1)

程序的行为是未定义

array具有自动存储持续时间(非正式地,将其视为"本地变量"),并取消引用指向它的指针返回main语言是不允许的。

(我们称之为悬空指针)。