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

C語言陣列深度解析:定義、初始化、遍歷與常見錯誤

     編輯:關於C語言

C語言陣列深度解析:定義、初始化、遍歷與常見錯誤

陣列是相同類型元素的連續內存集合,下標從 0 開始。

定義與初始化合法寫法

int a[5] = {10, 11, 12, 67, 56};  // 完整初始化
int a[5] = {10, 11};              // 部分初始化,其餘為 0
int a[5] = {[3]=10, [4]=11};      // C99 指定初始化器
int a[] = {10, 11, 14};           // 省略長度,由初始化列表推斷
int n = 5; int a[n] = {10,11,12}; // C99 變長陣列(VLA)初始化(部分編譯器支援)

非法寫法

int a[];              // 錯:無長度且無初始化
int a[5]; a = {1,2};  // 錯:陣列名非左值,不可整體賦值

遍歷與長度計算

int a[] = {10, 11, 12, 78};
int len = sizeof(a) / sizeof(a[0]); // 僅在陣列定義作用域有效
for (int i = 0; i < len; i++)
    printf("a[%d]=%d\n", i, a[i]);

注意:陣列作為函式參數時退化為指標,sizeof 失效,需額外傳遞長度。

二維陣列內存佈局

int a[3][4] 在內存中按行優先連續存儲:a[0][0] a[0][1] ... a[0][3] a[1][0] ...。可視為 3 個長度為 4 的一維陣列首尾相接。

字元陣列與字符串

  • char s[] = {'h','i'} — 無結束符,非字符串,不可用 strlen/printf("%s")。
  • char s[] = "hi" — 自動補 \0,長度為 3,標準字符串。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved