一、数组元素和普通变量
所谓数组,只是一次性定义多个变量。这些变量的类型是一致的、变量名之间仅索引有差别、在这些变量内存中是连续的。例如,定义如下数组:
int arr[3];
实际上相当于定义了这样3个变量:
int arr[0];
int arr[1];
int arr[2];
// 虽然在语法上并不可行,但这里是为了说明相当于定义了三个变量,变量名分别为arr[0]、arr[1]、arr[2]
同样地,我们可以直接定义3个普通变量:
int a;
int b;
int c;
这样看起来似乎数组的存在是多此一举,但当我们要定义很多变量时,数组就有它的优势。一方面不必考虑为多个变量起名字,另一方面也不必写多个语句来定义多个变量(即使C/C++提供了像 **int a,b,c;**这样简写的方式,对于多个变量的定义也是不方便的)
数组元素都可以当作一个普通变量,而这个变量的变量名就是“数组名[索引值]”。而数组元素最大的特点是它们的内存地址一定是连续且和索引值顺序一致,也正是这一特点保证了可以按索引的方式使用数组元素。
除了连续存储,在其他使用方面和普通变量并没有什么区别。
为了更方便地为每个元素进行初始化,数组支持多个元素的快速初始化:
int arr[3] = {
1, 2, 3};
这实际上和先定义数组再对每个元素进行赋值并没有什么区别:
int arr[3];
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
这两种方式的结果是一致的,不过第一种方式更符合数组产生的初衷。
数组元素的赋值
像普通变量一样,可以将数组的每个元素当作普通变量那样直接使用,在赋值或是初始化时将值赋给对应的元素(变量)。在赋值过程中同样遵循像普通变量赋值那样的类型转换等规律,例如:
int arr[3];
arr[0] = 1; // int字面量赋值给int变量
arr[1] = 123.45F; // float类型字面量赋值给int变量
arr[2] = 'c'; // 字符型字面量(int)赋值给int变量
相应的普通变量也可以这样使用:
int a,b,c;
a = 1