C 語言學習筆記 (八):陣列宣告
學習書籍: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維度];