利用指針數組輸出二維數組

指針數組來輸出二維數組 smart power

int (*pt)[4];
上述語句表示定義一個指針變量p,包含4個指向整形元素的一維數組,p表示該一維數組的首地址,可以將p看成是二維數組中的行指針,而p+i表示第i行的首地址,那麼 *(pt+i) + j 就表示二維數組第i行第j列的元素地址,*(*(pt+i)+j)就表示第i行第j列的元素值。

代碼中有一個地方不懂,已經註釋出來了,歡迎評論大神指出。

#include <stdio.h>
#include <stdlib.h>



int main()
{
    int test[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
    int *p,(*pt)[4],i,j;
    printf("The array is: \n");
    for(p = test[0]; p < &test[0][12]; p++)
    {

        if((p - test[0])%4 == 0)
            printf("\n%4d",*p);
        else
            printf("%4d",*p);

//        printf("\n\n%d,%d,%ld",p,test[0],p-test[0]); // 有個問題希望評論大神解決,爲什麼地址的差4表示1
    }
    printf("\nplease input the position like:i = , j = \n");
    scanf("i = %d, j = %d", &i, &j);
    pt = test;
    printf("\na[%d][%d] = %d",i,j, *(*(pt + i) + j));

    return 0;
}

==編程之路,你我相伴
在這裏插入圖片描述

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