實現代碼:
#include <stdio.h>
void main() {
int a[2][5] = {{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10}};
int (*p1)[5] = a; // 數組指針,等同 p1 = &a[0];
int *p2 = a[0]; // 一般指針,等同 p2 = &a[0][0];
int i, j;
printf("a = %p\n", a); // a 類型是 int (*)[5]
printf("&a = %p\n", &a); // &a 類型是 int (*)[2][5]
printf("a[0] = %p\n", a[0]); // a[0] 類型是 int *
printf("&a[0] = %p\n", &a[0]); // &a[0] 類型是 int (*)[5]
printf("a[0][0] = %d\n", a[0][0]); // a[0][0] 類型是 int
printf("&a[0][0] = %p\n", &a[0][0]); // &a[0][0]類型是 int *
printf("\n");
/*利用數組指針*p1遍歷數組輸出*/
for (i = 0; i < 2; i++) {
for (j = 0; j < 5; j++) {
printf("a[%d][%d] = %d\t", i, j, *(*(p1 + i) + j));
}
printf("\n");
}
printf("\n");
/*利用一般指針*p2遍歷數組輸出*/
for (i = 0; i < 2; i++) {
for (j = 0; j < 5; j++) {
printf("a[%d][%d] = %d\t", i, j, *p2++);
}
printf("\n");
}
printf("\n");
}
運行效果: