定義一個一維指針指向二維數組並打印

間接證明二維數組在物理上是線性存儲的

#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;

}
發佈了39 篇原創文章 · 獲贊 22 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章