首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言數組變量詳解:一維、多維、字符串與邊界檢查

     編輯:關於C語言

一維數組聲明

類型 變量名[長度];
// 示例
int a[10];
unsigned long b[20];
char *s[5];      // 指針數組
char *f[];       // 不完整類型,需初始化確定大小

關鍵規則

  1. 下標從 0 開始:int a[16] → a[0]~a[15]
  2. 字符串常用一維字符數組,\0 結束,數組名 = 首字符地址
  3. Turbo C 不做邊界檢查:越界寫入會覆蓋相鄰內存
    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])
  • 邊界檢查屬程序員責任,可封裝安全訪問宏/函數
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved