#include <stdio.h>
void main() {
int a[5][5];
int i, j;
// 初始化:每列填入列索引值
for (i = 0; i < 5; i++)
for (j = 0; j < 5; j++)
a[i][j] = i;
// 輸出驗證
for (i = 0; i < 5; i++) {
for (j = 0; j < 5; j++)
printf("%d ", a[i][j]);
printf("\n");
}
}
0 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4
int a[5][5] 在記憶體中佔用 5 × 5 × sizeof(int) 位元組,按列主序排列:
位址遞增 → a[0][0] a[0][1] a[0][2] a[0][3] a[0][4] ← 第 0 列 (5 個 int) a[1][0] a[1][1] a[1][2] a[1][3] a[1][4] ← 第 1 列 a[2][0] a[2][1] a[2][2] a[2][3] a[2][4] ← 第 2 列 a[3][0] a[3][1] a[3][2] a[3][3] a[3][4] ← 第 3 列 a[4][0] a[4][1] a[4][2] a[4][3] a[4][4] ← 第 4 列
| 運算式 | 型別 | 含義 | 位址值 |
|---|---|---|---|
a | int (*)[5] | 指向第一列的指標 | &a[0] |
a[0] | int* | 第一列首元素位址 | &a[0][0] |
&a | int (*)[5][5] | 指向整個陣列的指標 | &a[0][0] (同值不同型別) |