1. 程式人生 > >指標7(指標與二維陣列)

指標7(指標與二維陣列)

先來道例題

#include<stdio.h>
int main()
{int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
 int *p,i,j;
 p=&a[0][0];
 printf("\n");
 for(i=0;i<3;i++)
 {for(j=0;j<4;j++)
   {printf("%4d",*p++);
   }
   printf("\n");
 }
 return 0;
}

執行結果
在這裡插入圖片描述

對於m行n列的二維陣列a[m][n],其陣列元素a[i][j]在陣列中相對位置的計算公式為:
in+j
例如上體中a[2][3]的地址為p+2

4+3,即p+11,所以a[2][3]就可以表示為*(p+11)

樓主感覺用指標表示二維陣列的位置好麻煩。。。
下一道例題
題目:應用指標變數,輸出二維陣列a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}中任一元素
程式碼如下

#include<stdio.h>
int main()
{int a[3][4]={{0,1,2,3},{10,11,12,13},{20,21,22,23}};
 int *p,i,j;
 p=&a[0][0];
 printf("\nInput i and j:");//i代表行,j代表列 
 scanf("%d%d",&i,&j);
 printf("a[%d][%d]=%d\n",i,j,*(p+(i-1)*4)+(j-1));
 return 0;
}

執行結果
在這裡插入圖片描述

下一篇 指標8(應用指標向函式傳遞陣列)