标签: c arrays pointers
void f() {int *c=(int*)malloc(10);}
void f() {int c[10];}
我认为在第一种情况下,c+9将指向在堆上分配的数组中的元素c[9]。
c+9
c[9]
对于第二种情况,我认为c+9将指向位于堆栈上的数组的相同元素c[9]。
我是编程新手,我不确定这是否是正确答案。谢谢你的帮助。
答案 0 :(得分:1)
在这两种情况下,行为都是未定义的。在案例1中,它指向超出分配的内存块。如果是二,它指向一个在堆栈上分配的数组,现在已经弹出了。