指針數組來輸出二維數組 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;
}
==編程之路,你我相伴