二維數組指針

爲了加深對於二維數組指針的理解,找到了一個還不錯的例子,如下:

#include "stdio.h"
using namespace std;
int main()
{
    int a[3][4] = { {1,2,3,4},{10,11,12,5},{9,8,7,6} }, i, j;
    printf("%d,%d", a, *a);//打印數組的首地址,即第零行零列
    for (i = 0;i < 3;i++)
    {

        printf("\ninline:%d,\n%d,%d,\n",i,a[i],*(a + i));
        //打印數組第i行的首地址

        for (j = 0;j < 4;j++)

        {
            printf("%d,%d,\n", a[i] + j, *(a + i) + j);
        //打印第i行j列的地址


        for (j = 0;j < 4;j++)
        {
            printf("%d,%d,\n", *(a[i] + j), *(*(a + i) + j));
        }
         //打印第i行j列的元素值
    }
}

輸出結果如下
這裏寫圖片描述
這裏寫圖片描述

簡言之,就是可以這麼理解:

a[i],*(a+i),是指第i行第一個元素的地址,而a[i]+j和*(a+i)+j就是第i行j列元素的地址,而*a[i]+j,**(a+i)+j則是第i行j列元素

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章