iT邦幫忙

1

【從零開始的 C 語言筆記】第十三篇-Array介紹與應用(1)

  • 分享至 

  • xImage
  •  

不怎麼重要的前言

上一篇我們介紹了一個滿好用的函式庫,只要知道怎麼使用math.h的很多函式,都可以在我們需要數學運算時幫上很大的忙。

今天我們來介紹一下Array吧!


Array是什麼?

還記得第五篇我們有提到資料型態像是不同大小的盒子,而第六篇我們談到變數就像被寫上標籤的盒子,可以存放資料內容,等待我們需要的時候就能呼叫變數做任何處理。

那array又是什麼樣的概念呢?

array的中文翻譯會叫他陣列,如果說變數是有特定大小(資料型態決定)的盒子,那array就像一棟擁有同樣大小且疊再一起的盒子大樓,其中的每個盒子大小都是一致的,而各自的盒子(不同樓層)又可以存放不同的資料。

如下圖這個樣子:
https://ithelp.ithome.com.tw/upload/images/20211028/20142565B84rf6VtDH.png

而array的index編號(可以想像成樓層編號)則是由0.1.2.3等持續往後編,所以如果陣列大小(總樓層數)是8,編上樓層的話會長這樣:
https://ithelp.ithome.com.tw/upload/images/20211028/20142565NDI7IFNBJ8.png

以下面這段程式碼為例:

int arr[] = {1,2,3,4,5,6,7,8};

陣列arr的資料內容對應index(樓層編號)如下:
https://ithelp.ithome.com.tw/upload/images/20211028/20142565D83Vtai36b.png


正式使用Array

我們前面大概介紹了陣列是什麼東西,接下來我們來介紹一下怎麼使用吧!

  1. 宣告一個陣列
    陣列與變數一樣,使用前都必須先宣告。

(1) 只給予陣列大小

int arr[10];

https://ithelp.ithome.com.tw/upload/images/20211028/20142565IboAwESqf8.png

(2) 不給陣列大小,但直接賦值

int arr[] = {1,2,3,4,5,6,7,8};

https://ithelp.ithome.com.tw/upload/images/20211028/20142565aCs8AUEnqX.png

(3) 給予陣列大小、賦值

int arr[5] = {1,2,3,4,5};
  1. 陣列的使用
    搭配前面所提到的index概念,array的資料內容和變數一樣,是可以自由使用、處理的。

(1) 陣列內的資料內容
https://ithelp.ithome.com.tw/upload/images/20211028/20142565vOXbsYeOmm.png
如以下:

arr[2] = 777;

(2) 實際應用

#include <stdio.h>

int main(){
    int arr[]={1,2,3,4,5,6,7,8};

    printf("data of arr\n\n");
    printf("index 0: %d\n", arr[0]);
    printf("index 1: %d\n", arr[1]);
    printf("index 2: %d\n", arr[2]);
    printf("index 3: %d\n", arr[3]);
    printf("index 4: %d\n", arr[4]);
    printf("index 5: %d\n", arr[5]);
    printf("index 6: %d\n", arr[6]);
    printf("index 7: %d\n", arr[7]);
    printf("------\n\n");

    arr[2] = 777;

    printf("data of arr\n\n");
    printf("index 0: %d\n", arr[0]);
    printf("index 1: %d\n", arr[1]);
    printf("index 2: %d\n", arr[2]);
    printf("index 3: %d\n", arr[3]);
    printf("index 4: %d\n", arr[4]);
    printf("index 5: %d\n", arr[5]);
    printf("index 6: %d\n", arr[6]);
    printf("index 7: %d\n", arr[7]);
    printf("------\n\n");

    arr[2] = arr[2]-111;
    printf("data of arr\n\n");
    printf("index 0: %d\n", arr[0]);
    printf("index 1: %d\n", arr[1]);
    printf("index 2: %d\n", arr[2]);
    printf("index 3: %d\n", arr[3]);
    printf("index 4: %d\n", arr[4]);
    printf("index 5: %d\n", arr[5]);
    printf("index 6: %d\n", arr[6]);
    printf("index 7: %d\n", arr[7]);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211028/20142565hZIAaaOy0p.png

  1. 陣列與變數不同的地方

變數名稱使用時會直接代表其資料內容,要找到變數地址時還需使用到「&」,但陣列名稱所代表的並不是陣列的資料內容,而是陣列地址本身,所以當你想要printf array時,並不會依序列印出array的資料內容。

#include <stdio.h>

int main(){
    int data = 5;
    int arr[] = {1,2,3,4,5};

    printf("data: %d\n", data);
    printf("address of data: %p\n", &data);
    printf("arr : %p\n", arr);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211028/20142565MRk7sH3OKZ.png


Array小結

  1. 宣告陣列時需同時宣告陣列大小或同時賦值(因為會自動分配陣列大小)
int arr[10];
int arr[]={1,2,3,4,5,6,7};
int arr[5]={1,2,3,4,5};
  1. 陣列的index由0開始依序往後
    https://ithelp.ithome.com.tw/upload/images/20211028/20142565K5aI30UxaS.png

  2. 使用陣列內的資料內容時須以特定格式

arr[2] = 777;

https://ithelp.ithome.com.tw/upload/images/20211028/20142565Zfuvm6ihR1.png

  1. 並不能直接printf陣列名稱,而印出整個陣列的資料內容,你會印出的只有陣列地址
#include <stdio.h>

int main(){
    int data = 5;
    int arr[] = {1,2,3,4,5};

    printf("data: %d\n", data);
    printf("address of data: %p\n", &data);
    printf("arr : %p\n", arr);

    return 0;
}

https://ithelp.ithome.com.tw/upload/images/20211028/20142565xmu4kKnw3t.png


辛苦看到這裡的你們,這樣就大致介紹完array了,可以參考程式碼自己測試看看,雖然不曉得這樣的解釋方式大家看不看得懂,但就盡力了QQ

下一篇稍微介紹一下array的延伸應用(應該算是啦?)!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言