iT邦幫忙

2021 iThome 鐵人賽

DAY 20
1

陣列是由一群具有相同名稱或者相同資料型態變數的順序集合,而因為整個陣列中的變數名稱都相同,所以我們需要用陣列的 index 去存取陣列中的變數。

陣列和變數的功能都是拿來儲存資料,但每一個變數只能儲存一項資料,而陣列是由一連串的主記憶體空間組合而成,所以可以同時連續儲存多項資料,也可以一次宣告多個變數,讓我們不用寫那麼多行程式碼來宣告多個變數,增加了程式的可讀性。

陣列定義

  1. 陣列中的每個元素一定是同一種資料型態
  2. 陣列的大小必須是常數(constant value)
  3. 使用連續記憶體位址,最低位址是第一個元素(index = 0)
  4. 如果陣列沒有被分配初始值,最好把陣列初始化為零或 null
  5. 插入或刪除元素時比較麻煩,因為需要挪移其他元素
  6. 用來表示有序串列的一種方式

陣列格式

根據陣列格式的不同,可以把陣列分為:

  1. 一維陣列
  2. 二維陣列
  3. 多維陣列

陣列的表示方法如下:

  • dataType arrayName[arraySize]; //一維陣列
  • dataType arrayName[arraySize][arraySize]; //二維陣列
  • int score[30]; //沒有宣告初值的陣列
  • int arr[5] = {4, 5, 6, 7, 8}; //一併宣告初值、長度為五的陣列
  • int arr[] = {4, 5 ,6, 7, 8}; //讓電腦自動決定陣列長度
  • int arr[5] = {0}; //初始化,將所有元素設為0

陣列的圖示化:
如果我們的陣列寫成 int arr[5] = {4, 5, 6, 7, 8};
他的圖示化大概長這樣:

陣列的空間分配方式

不管是幾維的陣列,C 語言都會分配一塊連續的記憶體空間處理。不同名稱陣列的記憶體空間可能不連續,但是在同一個陣列的記憶體空間必定連續
例如:
int a[10];
等同於分配 10*sizeof(int) 個 bytes

int a[5][10];
等同於分配 5*10*sizeof(int) 個 bytes

可是如果是呼叫函數傳遞參數時,如:

void fun(int x[]){

}

這裡的陣列 x[] 是沒有分配空間的,只傳遞陣列的開頭地址(指標)。

今天對於陣列有了基本認識,明天讓我們來看看陣列的程式碼~


上一篇
【Day 19】while 迴圈 / for 迴圈的範例講解
下一篇
【Day 21】陣列的程式範例與字串介紹
系列文
C 語言的簡單入門30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言