【Day 20】C 语言的阵列

阵列是由一群具有相同名称或者相同资料型态变数的顺序集合,而因为整个阵列中的变数名称都相同,所以我们需要用阵列的 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 20 制作 Nav Bar - Scrollbar

>>:  食谱搜寻系统制作_中

【Day 30】JavaScript Async/Await

async和await是 ES7 引入的标准之一。建立在 promise 的语法基础上,只要 fun...

Microsoft Azure Pass 学习日志 Day 3

Chap.II Storage Services 存储服务 磁碟:具有不同大小、性能 档案:使你可以...

Day12 开发插件 - 范例程序码介绍01 Flutter 端

官方推荐的做法是使用cmd 来创建,可以去官方文件参考,这边我来用Android Studio 来开...

Day 9 来了fireEvent

小弟fireEvent 与大哥user.event 各位在做测试时一定会遇到需要跟网页互动的一些行为...

D19 - 今晚我想来点 唯独派 getter 唯写派 setter

前言 JavaScript 内的物件都有内建的两个属性,可以实现对物件的存取,称为: getter ...