我所遇到出外代碼:指針運算和地址
#include <stdio.h>
int main(void)
{
int a[5] = { 1, 2, 3, 4, 5};
int *ptr = (int*)(&a + 1);
int *ptr2 = (int*) &a;
ptr2 +=1 ;
printf("%d %d %d \n", *(a + 1),*(ptr - 1) ,*ptr2);
return 0;
}
指針算法確實對我來說,除了這行:
int *ptr = (int*)(&a + 1);
它是不確定的行爲? 爲什麼我們得到5
取消引用*(ptr - 1)
?
'int a [5] = {1,2,3,4,5,6};'是一件很糟糕的事! – jn1kk
@jsn我的壞!這只是問題中的5個元素,我在複製代碼之前做了一些奇怪的測試,我會改變它:)但問題依然存在。 – user1471