数组
定义:数组是相同类型,有序数据的集合。
数组的特征
-
数组中的数据被称之为数组的元素(所谓的元素就是数组的每一个匿名的变量空间)是同构。
-
数组中的元素存放在内存空间(char player_name[6]含义是:申请在内存中开辟6块连续的基于char型的变量空间)(注:数组本身无内存空间,由约束的这组内在元素决定空间多大)
衍生概念:下标(索引)
-
下标或者索引代表了数组中元素距离第一个元素的偏移量(本质是每个元素首地址距离第一个元素首地址的偏移量)
举例:第1个元素距离第一个元素的偏移量是0,所以数组中的下标是从0开始的。

下标计算:(高地址元素首地址 – 首元素首地址)/数组元素类型
int a:在内存中开辟一块空间,该空间的大小是4个字节。
int a1,a2,a3,a4,a5:在内存中开辟连续的5块内存,每一块空间的大小是4个字节,但是不如数组方便。
int arr[5]:在内存中开辟连续的5块内存,每一块空间的大小是4个字节。
注意:
数组的下标是从0开始的,数组的最大下标 = 数组的元素个数(数组容量或大小)- 1
有变量名优先用变量名访问空间,有数组用数组名结合下标访问空间,数组只是对内在元素起一个约束作用。
数组中元素越靠后地址值越大,越靠前地址值越小。
一维数组
数组的定义
语法:
数据类型 数组名[数组容量];
注意:数据类型又被称作类型说明符,数组容量又被称作数组元素个数或者数组的大小/长度。
说明:
-
数组的数据类型由数组中的元素决定。也就是说数据类型由元素的类型决定,元素是什么类型,数组就是什么类型,同一个数组中,所有元素的类型都是一致的。
-
数组名也是标识符,数组(名)可以理解为数据类型是数组的变量(名)。命名规范与变量的规则一样,唯一的区别是变量使用单数,数组使用复数。也就是以字母或者下划线开头,后面只能跟字母、数字、下划线。
-
数组容量还可以叫常量表达式。值必须是整数关于数组容量的类型:
-
C89标志:只支持常量和符号常量,不支持变量

-
C99标准:引入变长数组(VLA: MSVC(微软编译器)对C99的VLA支持有限,GCC/Clang等编译器支持较好,)的概念,就是可以使用变量,数组在运行时决定大小。举例:

类型:
代表了数组中元素的类型,数组的空间大小 = 数组中所有元素空间之和
容量:
数组中能存储多少个元素,数组容量一定是一个整型。
①定义一个数组,相当于申请了一个可以容纳指定元素个数的内存单元。所申请的内存单元是连续。
②定义一个数组,相当于定义了多个匿名变量,这些变量因为匿名,所以需要通过数组名[下标]来访问。
例:int arr[10];(定义一个存放10个int类型元素的数组)。
关于数组中元素默认值的问题:
-
全局作用域和static修饰变量:元素的默认值是0
-



