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

C語言基礎教程(二):數組聲明、初始化、多維數組與內存佈局

     編輯:C 語言基礎

一維數組


類型 變量名[長度];
  • 元素類型任意:int/float/char/pointer/struct/union。
  • 下標從 0 開始:int a[10] → a[0]~a[9]。
  • 字符串用字符數組:char str[8] = "hello"; → str[0]='h'...str[4]='o', str[5]='\0'。

Turbo C 無邊界檢查


char s1[5], s2[6];
strcpy(s1, "ABCDEFG");  // 只複製 "ABCDE",'F' 溢出進入 s2 區域!
  • 程序員自負責邊界,建議用 strncpy/snprintf。

多維數組


類型 數組名[第N維][第N-1維]...[第1維];
  • 聲明順序與 C/C++ 相反(BASIC/Fortran 習慣)。
  • 示例:int m[3][2] → 3 行 2 列,共 6 元素。
  • 內存順序:行主序,最右維變化最快。
    
    m[0][0], m[0][1], m[1][0], m[1][1], m[2][0], m[2][1]
            
  • 三維示例:char c[2][2][3] → 12 元素,順序 c[0][0][0]..c[0][0][2], c[0][1][0]..c[1][1][2]。

內存佔用計算


字節數 = 維1長度 * 維2長度 * ... * 維N長度 * 元素類型字節數

數組初始化

規則

  1. 外部/靜態數組可初始化,自動數組 C99 前不允許(現代編譯器支持)。
  2. 初始化列表用 {} 包裹,行用 {},逗號分隔,總體再包一層 {}。
  3. 多維數組按行主序填充,可攤平為一維列表:int x[2][3] = {1,2,3,4,5,6};。
  4. 初始化項少於元素數,剩餘自動填 0。
  5. 指針數組初始化可省略長度:char *f[] = {'a','b','c'}; → 3 元素。

示例


// 二維數組完整初始化
int p[2][3] = {{2, -9, 0}, {8, 2, -5}};
int m[2][4] = {{27, -5, 19, 3}, {1, 8, -14, -2}};

// 攤平初始化
int x[2][3] = {1, 2, 3, 4, 5, 6};

// 部分初始化,餘下補 0
int a[5] = {1, 2};  // a = {1,2,0,0,0}

// 指針數組
char *f[] = {'A', 'B', 'C'};  // f[0]->'A', f[1]->'B', f[2]->'C'

總結

  • 一維數組:type name[len],下標 0 起,字符串留 \0 位。
  • 無邊界檢查,溢出鄰近內存,極度危險。
  • 多維數組:聲明維度順序反直覺,內存行主序,最右維最快。
  • 初始化:{} 套 {},可攤平,不足補 0,指針數組可推導長度。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved