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

C語言二維數組初始化、內存佈局與字符數組字符串處理

     編輯:關於C語言

二維數組初始化兩種形式

按行分組


static int a[5][3] = {
    {80, 75, 92},
    {61, 65, 71},
    {59, 63, 70},
    {85, 87, 90},
    {76, 77, 85}
};

按行連續


static int a[5][3] = {
    80, 75, 92,
    61, 65, 71,
    59, 63, 70,
    85, 87, 90,
    76, 77, 85
};

結果完全相同,按行主序填充。

部分初始化規則

  • 未初始化元素自動為 0
  • static int a[3][3] = {{1},{2},{3}}; → 每行首列賦值,其餘 0
  • static int a[3][3] = {{0,1},{0,0,2},{3}}; → 按序填充,其餘 0

第一維長度可省略


static int a[][3] = {1,2,3,4,5,6,7,8,9}; // 編譯器推導為 3 行

二維數組分解視角

a[3][4] 可視為 3 個一維數組:a[0], a[1], a[2],各長 4。名稱即數組名(地址),不可作下標變量用。

字符數組與字符串

聲明


char c[10];        // 一維
char c[5][10];     // 二維
// 亦可用 int 但佔 2 字節/元素

初始化


static char c[10] = {'c',' ','p','r','o','g','r','a','m'};
static char c[] = "C program"; // 推薦,自動長度含 \0

二維字符數組輸出示例


main() {
    int i, j;
    char a[][5] = {{'B','A','S','I','C'}, {'d','B','A','S','E'}};
    for (i=0; i<=1; i++) {
        for (j=0; j<=4; j++) printf("%c", a[i][j]);
        printf("\n");
    }
}

字符串結束符 \0 的作用

  • 標記字符串結束,不依賴數組長度
  • 字符串函數(strlen, strcpy, printf("%s"))依賴 \0
  • 字符串初始化自動添加 \0

綜合應用:學生成績統計


void main() {
    int i, j, s=0, l, v[3];
    static int a[5][3] = {{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};
    for (i=0; i<3; i++) {
        for (j=0; j<5; j++) s += a[j][i];
        v[i] = s/5; s=0;
    }
    l = (v[0]+v[1]+v[2])/3;
    printf("math:%d\nc languag:%d\ndbase:%d\n", v[0],v[1],v[2]);
    printf("total:%d\n", l);
}

二維數組是矩陣、表格、多維數據的基礎表示,掌握其初始化、佈局、分解視角對數據處理編程至關重要。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved