C 語言學習筆記 (八):陣列宣告

| Jun 28, 2021 min read

學習書籍:C 語言學習手冊 第四版。作者: 洪維恩 這是一篇記錄自己學習 C 語言的過程,算是給自己看的筆記,所以這裡面的內容,是我整理書中我認為重要的部分,然後用自己的方式重新寫一遍,如果有圖,我會理解完,再自己畫出來,內容肯定會和課本上有出入,若有錯誤,或是理解錯的地方,希望能讓我知道。


何謂陣列

陣列 (array) 是由一群"相同資料型態"的變數所組成的一種資料結構。陣列和變數一樣都需要經過宣告才能使用,而陣列中的元素 (element) 都是以索引值 (index) 來表示存放位置。依照陣列複雜程度,可以區分成一維陣列、二維陣列,甚至更多維度的多維陣列。

一維陣列

一維陣列宣告方式:

資料型態 陣列名稱[個數];

陣列宣告之後,編譯器會在記憶體中分配一個連續區塊給陣列使用,而這些區塊就是用來存放陣列的元素。

int score[5];
float averge[6];
char name[4];

陣列是通過索引值來存取元素,索引值是從零開始依序編號下去,例如score[0]、score[1]、score[2] ...

#include <stdio.h>
#include <stdlib.h>

int main(void){
    int score[4];

    score[0] = 65;
    score[1] = 95;
    score[2] = 45;
    score[3] = 85;

    for(i=0; i<4; i++) {
        printf("score[%d]=%d\n",i,score[i]);
    }

    system("pause");
    return 0;
}

如果沒有設定數值給陣列的元素時,所取得的數值為記憶體殘值。 陣列不會自動偵測索引邊界,因此超出陣列的索引值取的數值也是記憶體殘值。

一維陣列的初值設定:

資料型態 陣列名稱[個數n] = {初值0, 初值1, ... ,初值n};

查詢陣列所佔的記憶體大小 sizeof

sizeof(陣列名稱)

double data[4]; // 宣告陣列

// 陣列的記憶體大小 printf( sizeof(data) );

// 陣列元素的記憶體大小 printf( sizeof(data[0]) );

// 元素的個數 printf( sizeof(data)/sizeof(double) );


二維陣列與多維陣列
---------

二維陣列宣告方式:

資料型態 陣列名稱[列個數][行個數];


二維陣列初值設定:

資料型態 陣列名稱[列個數n][行個數m] = { {第0列}, // 第0列包含:{第0行,第1行, … ,第m行} {第1列}, // 第1列包含:{第0行,第1行, … ,第m行} {第2列}, // 第2列包含:{第0行,第1行, … ,第m行} … , {第n列}, // 第n列包含:{第0行,第1行, … ,第m行} };

int arr2d[3][4] = {
    {0,1,2,3},
    {0,1,2,3},
    {0,1,2,3},
};
```

二維陣列的存取方式:

```
#include <stdio.h>
#include <stdlib.h>

int main(void){
    int arr2d[3][4] = {
        {0,1,2,3},
        {0,1,2,3},
        {0,1,2,3},
    };

    for(n=0; n<3; n++) {
        for(m=0; m<4; m++) {
            printf("arr2d[%d][%d]=%d\n",n,m,arr2d[n][m]);
        }
    }

    system("pause");
    return 0;
}
```

多維陣列宣告方式:

```
資料型態 陣列名稱[第1維度個數][第2維度個數][第3維度個數]...[第n維度];
```
comments powered by Disqus