間接證明二維數組在物理上是線性存儲的
#include <stdio.h>
// 證明二維數組在物理上是線性存儲的
// a[i][j]
// a[0] = a+0; a[1] = a+1; a[i] = a+i ;a+i表示第i-1行的地址
// *a表示第一行第一列的地址, *a+1表示第一行第二列的地址
// 定義一個一維指針指向二維數組的時候, 要將其指向二維數組的第一行第一列的地址,也就是*(a+0)+0=*a
// 但是不能定義成*a[0]+0 = *a[0]; 具體原因待在下再深入學習,下回合揭曉;
int main(void)
{
char a[10][3] = {"aaa", "bbb", "ccc", "ddd"};
char *pa;
int i = 0;
pa = *a; // pa指向二維數組的第一行第一列;
for (i=0; i<12; i++){
printf("%c\n", *(pa+i));
}
return 0;
}