C语言一维数组,到底是什么一回事?细细道来
一维数组定义和使用
一维数组的定义格式如下:
数据类型 数组名 [常量值];
格式分析:
(1) 数据类型,表示要在数组中,存放数据的类型。例如,要存放整数值,可以是int类型;要存放字符,可以是char类型;
(2) 数组名,是数组的名称,必须是合法的标识符;就是数组变量的名称,与普通的变量名一样,必须是合法的标识符。
(3) 常量值,表示数组的长度,就是数组的元素个数;注意:它是“常量”的属性,例如30这样的常整数。不可以是变量。
那么,对于上面引出问题的例子,我们需要存放{100, 88, 99, 200, 600, 800}这样的一组数据,可以分析:
(1) 存放数据的类型是整数值,所以,元素的数据类型是int类型;
(2) 有6个数值,所以,数组需要6个元素来存放这些数据,所以,数组的长度是6;
(3) 选择一个合法的标识符作为数组名,我们可以定义数组名为 array;
那么,我们可以定义数组:
int array[6];
此时,我们就定义了一个数组,有:
(1) 数组名是array;
(2) 数组中存放元素的类型是int类型;
(3) 数组中存放元素的个数是6个;
此时,我们定义了数组,那么,要怎么样使用数组中的元素?把{100, 88, 99, 200, 600, 800}这样的一组数据存放到数组中?
那么,我们就需要学习:数组元素的使用。
数组元素使用的格式如下:
数组名[下标];
使用格式说明:
(1) 数组名,就是定义数组时候的数组名;
(2) 下标只能够是整数值,可以是6这样的常整数值,也可以是 int i = 6; 这样的整数变量。
(3) 下标取值的范围是从0开始,如果数组的长度是N个元素,那么,下标取值的最大值是N-1,所以,数组的长度是N个元素,那么,下标取值范围是(0 ~ N-1)。
假设我们定义了一个数组,数组的名称是array,在数组中存放了{100, 88, 99, 200, 600, 800}这样的一组数据,那么,数据在内存中存放的格式如下:
100 | 88 | 99 | 200 | 600 | 800 |
此时,数组名指向内存块的首地址,然后,下标从0开始获取元素,就有:
array[0] --- 表示第0个元素,即100这个数值;
array[1] --- 表示第1个元素,即88这个数值;
array[2] --- 表示第2个元素,即99这个数值;
array[3] --- 表示第3个元素,即200这个数值;
array[4] --- 表示第4个元素,即600这个数值;
array[5] --- 表示第5个元素,即800这个数值;
array[6] --- 表示第6个元素,异常,数组越界;因为,不存在第6个元素;
可以看到,下标从0开始,然后数组名 array和下标,就可以访问数组中指定的元素。注意:array数组的长度是6,所以,下标的合法范围是0 ~ 5;对于array[6]元素,是不存在,这样访问数组,会导致内存溢出,程序溢出。所以,在使用数组的时候,必须特别注意数组下标的使用,不要访问数组越界。
那么,我们编写一个测试例子,把{100, 88, 99, 200, 600, 800}这组数据存放到一个数组中,程序测试例子如下:
深入学习,可以交个朋友,工人人人号:韦凯峰linux编程学堂
程序运行的结果如下:
深入学习,可以交个朋友,工人人人号:韦凯峰linux编程学堂
可以看到,我们把一组数据存放到数组中,然后,再访问数组中的每一个元素,打印输出。例如 array[2] = 99;就是给下标是2的元素赋值;下标可以是一个变量,例如,输出元素的时候,是访问array[i]元素,此时,下标是int类型的变量。