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

C語言數組基礎概念:從變量到數組的演進、定義、初始化與內存模型

     編輯:C 語言基礎

為什麼需要數組?

輸出 4×4 矩陣需 16 個變量(a1..a4, b1..b4...),代碼冗長且難維護。數組將同類型多個數據組織為單一整體,用下標訪問。

數組定義

dataType arrayName[length];
  • int a[4]; → 分配 4 個 int 連續內存(16 字節),命名為 a
  • a 代表首地址,a[0]..a[3] 為 4 個元素
  • 下標從 0 開始,範圍 0 ≤ index < length

四大核心規則

  1. 元素類型統一:int a[4] 全為 int
  2. 長度最好為常量:10、20*4 可攜帶;變量長度 (VLA) 非標準
  3. 越界未定義行為:下標超出範圍 → 數據破壞/崩潰/看似正常
  4. 內存連續:元素緊鄰無間隙,利於緩衝區局部性

數組初始化

定義時整體初始化

int a[4] = {20, 345, 700, 22};

初始化規則

完整演示:輸入輸出與部分初始化

#include <stdio.h>

int main() {
    int a[6] = {299, 34, 92, 100};  // 後 2 個自動為 0
    int b[6], i;
    
    // 鍵盤輸入賦值 b
    for (i = 0; i < 6; i++) scanf("%d", &b[i]);
    
    // 輸出 a
    for (i = 0; i < 6; i++) printf("%d ", a[i]);
    putchar('\n');
    
    // 輸出 b
    for (i = 0; i < 6; i++) printf("%d ", b[i]);
    putchar('\n');
    
    return 0;
}

運行結果

90 100 33 22 568 10
299 34 92 100 0 0
90 100 33 22 568 10

用數組重寫矩陣輸出

int a[4] = {20, 345, 700, 22};
int b[4] = {56720, 9999, 20098, 2};
int c[4] = {233, 205, 1, 6666};
int d[4] = {34, 0, 23, 23006783};

printf("%-9d %-9d %-9d %-9d\n", a[0], a[1], a[2], a[3]);
printf("%-9d %-9d %-9d %-9d\n", b[0], b[1], b[2], b[3]);
printf("%-9d %-9d %-9d %-9d\n", c[0], c[1], c[2], c[3]);
printf("%-9d %-9d %-9d %-9d\n", d[0], d[1], d[2], d[3]);

數組名本質

  • int a[4]; → a 是首元素地址(&a[0])
  • 數組名是常量指針,不可修改(a++ ❌)
  • sizeof(a) = 整個數組大小(16),非指針大小
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
情況行為示例
部分初始化前賦值,後補 0int a[10]={1,2,3}; → 1,2,3,0,0,0,0,0,0,0
全 0 初始化只給首元素 0int a[10]={0}; / char c[10]={0};
不可整體賦值定義後只能逐元素int a[10]=1; ❌ 錯誤
長度自動推導全初始化時可省略int a[]={1,2,3,4,5}; ≡ int a[5]={...};