本帖最後由 enter 於 2015-1-5 19:25 編輯
#include <stdio.h>
int main(void){
int x[4][5]={
0,1,2,3,4,
5,6,7,8,9,
10,11,12,13,14,
15,16,17,18,19
};
printf("%d %d\n",x[2][3],*(*x+13)); //第二列第三個元素13,x*此時位址,它往後再加13個,然後再全部加上*就是值。
printf("%p %p\n",&x[1][0],x+1); //此時x代表x陣列的第一個元素,也是陣列的位址開頭,它加一是指到下一列。
printf("%p %p\n",x,*x); //x和*x都指陣列的啟始位址。
printf("%p %p %p %p\n",&x[0][1],*x+1,x+1,&x[1][0]); //*x此處既然已是啟始位址,它往下加一就是指到下一元素,亦即第二個。但如果x+1則指到第二列,就是&x[1][0]。
int y[5]={0,1,2,3,4};
printf("%p %p\n",&y[2],y+2); //此處一維陣列中,第三個元素寫成y+2,其實可視為每一元素就是一列,那就符合多維陣列的邏輯。
return 0;
} |