对于给定的函数,指针c + 9指向哪个内存段?

时间:2015-03-16 21:43:25

标签: c arrays pointers

  1. void f() {int *c=(int*)malloc(10);}
  2. void f() {int c[10];}
  3. 我认为在第一种情况下,c+9将指向在堆上分配的数组中的元素c[9]

    对于第二种情况,我认为c+9将指向位于堆栈上的数组的相同元素c[9]

    我是编程新手,我不确定这是否是正确答案。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

在这两种情况下,行为都是未定义的。在案例1中,它指向超出分配的内存块。如果是二,它指向一个在堆栈上分配的数组,现在已经弹出了。