不怎么重要的前言
上一篇我们介绍了一个满好用的函式库,只要知道怎么使用math.h的很多函式,都可以在我们需要数学运算时帮上很大的忙。
今天我们来介绍一下Array吧!
Array是什么?
还记得第五篇我们有提到资料型态像是不同大小的盒子,而第六篇我们谈到变数就像被写上标籤的盒子,可以存放资料内容,等待我们需要的时候就能呼叫变数做任何处理。
那array又是什么样的概念呢?
array的中文翻译会叫他阵列,如果说变数是有特定大小(资料型态决定)的盒子,那array就像一栋拥有同样大小且叠再一起的盒子大楼,其中的每个盒子大小都是一致的,而各自的盒子(不同楼层)又可以存放不同的资料。
如下图这个样子:
而array的index编号(可以想像成楼层编号)则是由0.1.2.3等持续往后编,所以如果阵列大小(总楼层数)是8,编上楼层的话会长这样:
以下面这段程式码为例:
int arr[] = {1,2,3,4,5,6,7,8};
阵列arr的资料内容对应index(楼层编号)如下:
正式使用Array
我们前面大概介绍了阵列是什么东西,接下来我们来介绍一下怎么使用吧!
宣告一个阵列阵列与变数一样,使用前都必须先宣告。
(1) 只给予阵列大小
int arr[10];
(2) 不给阵列大小,但直接赋值
int arr[] = {1,2,3,4,5,6,7,8};
(3) 给予阵列大小、赋值
int arr[5] = {1,2,3,4,5};
阵列的使用搭配前面所提到的index概念,array的资料内容和变数一样,是可以自由使用、处理的。
(1) 阵列内的资料内容
如以下:
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;}
变数名称使用时会直接代表其资料内容,要找到变数地址时还需使用到「&」,但阵列名称所代表的并不是阵列的资料内容,而是阵列地址本身,所以当你想要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;}
Array小结
宣告阵列时需同时宣告阵列大小或同时赋值(因为会自动分配阵列大小)int arr[10];
int arr[]={1,2,3,4,5,6,7};
int arr[5]={1,2,3,4,5};
阵列的index由0开始依序往后
使用阵列内的资料内容时须以特定格式
arr[2] = 777;
#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;}