#include <stdio.h> int main() { int a[5] = {1,2,3,4,5}; int *ptr = (int *)(&a+1); //int **p =&a; printf("%d %d\n",*(a+1),*(ptr-1)); return 0; }
上面代碼輸出結果是2,5。ptr是雙重指針了,理解爲一個二維數組,ptr應該就是第一行a的下一行起始地址。具體理解圖示如:
還有如下的題目: int c = (int)(((int*)0)+4); //c=16