#include <stdio.h>
int main(void)
{
int a[5]={1,2,3,4,5};
int *ptr=(int*)(&a+1);
printf("%d %d\n",*(a+1),*(ptr-1));
return 0;
}
2 5
在這裏,在聲明*ptr= (int*)(&a+1)
1不添加到&a
。其實它就像&a + sizeof(a)
。現在我的問題是存儲指針變量的大小,還是沒有存儲指針變量的大小,然後如何計算。在int, float, char
等的情況下,它們的大小是在編譯器中預定義的,所以int *a
是不同的情況。是不是真的只有地址存儲在指針變量中沒有其他的東西?關於指針變量的元數據被存儲在哪裏?
重複:http://stackoverflow.com/questions/7194388/using-pointers-in-c – phoxis