類型 變量名[長度];
// 示例
int a[10];
unsigned long b[20];
char *s[5]; // 指針數組
char *f[]; // 不完整類型,需初始化確定大小
int a[16] → a[0]~a[15]\0 結束,數組名 = 首字符地址char str1[5], str2[6];
strcpy(str1, "ABCDEFG"); // "E" 會溢出覆蓋 str2[0]!
類型 數組名[第n維][第n-1維]...[第1維];
// 注意:與 BASIC/Fortran 維度順序相反
int m[3][2]; // 3行2列,6個元素
char c[2][2][3]; // 三維,12個元素
m[3][2] 順序:
m[0][0], m[0][1],
m[1][0], m[1][1],
m[2][0], m[2][1]
c[2][2][3] 順序:
c[0][0][0], c[0][0][1], c[0][0][2],
c[0][1][0], c[0][1][1], c[0][1][2],
c[1][0][0], c[1][0][1], c[1][0][2],
c[1][1][0], c[1][1][1], c[1][1][2]
字節數 = 維1長度 × 維2長度 × ... × 維n長度 × 元素類型字節數
int a[3][4] 可視為 3 個一維數組:a[0], a[1], a[2],每個長度 4。這是理解二維數組指針運算的基礎。
strncpy、snprintf 防越界void func(int a[][4])