数组:就是只能存放一种数据类型,比如Int类型的数组,里面存放的数据被称为“元素”
数组的定义:

格式:元素类型 数组名 [元素个数];
例如:int a[3];
数组元素有顺序之分,在一维数组中每个元素的下标是唯一的,而且都是从0开始。
数组在定义时就可以进行赋值:
int a[4]={12,20,30,40};
{ }中的值为各元素的初值,各值之间需要用逗号隔开。
对数组赋初值时还应注意以下几点:
1.可以只给部分元素赋初值。当{ }中的值的个数时,只给前面部分的元素赋值。
例如:int a[5]={1,2,3} 表示只给数组中的a[0]~a[2]三个元素赋值,而后面的各元素自动赋值为0。
也可以直接将数组中的所有元素直接赋值为0.
int a[10]={0};
double a[10]={0};

因为剩余的元素会自动初始化为0,所以只需要给第1个元素赋值为0即可。
二维数组
定义:
定义形式:类型 数组名 [行数][列数]
int a[3][4];代表有三行四列的二维数组
二维数组的存放顺序是按行存放的,先存放第一行的元素,在存放第二行的元素,例如int a[2][3]的存放顺序为a[0][0]→a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]
二维数组的初始化可以按行分段赋值,也可以按行连续赋值,并且两种赋值方法的结果是完全相同的。
在给二维数组的初始化赋值时注意
1.与一维数组相同,可以只对部分元素赋值,未赋值的元素自动取0值。
例如int a[3][3]={{1}{2}{3}};
是对每一行的第一列元素赋值,未赋值的元素自动取0,赋值后各元素的值为:
1 0 0
2 0 0
3 0 0
2.若对全部元素赋初值,则第一维的长度可以不给出。
例如:int a[3][3]={1,2,3,4,5,6,7,8,9};
可以写为 a[][3]={1,2,3,4,5,6,7,8,9};
3.二维数组也可以看作是由一维数组嵌套而成的,把一维数组的每个元素看作是一个数组,就组成了二维数组。但是前提必须为各元素的类型必须相同。
字符串和字符数组的区别
用来存放字符的数组成为字符数组,实际上是一系列字符的集合,也就是字符串(string)。
C语言规定,可以将字符串直接赋值给字符数组。
在数组中还有一个重点就是数组越界问题。
C语言数组不会自动扩容,当下表小于0或者大于等于数组长度时,就发生了越界问题,访问到数组以外的内存。如果下标小于0,就会发生下限越界;如果下标大于等于数组长度,就会发生上限越界。
但是在C语言中并不会对越界行为进行检查,所以即使越界了,也能够正常的编译,只有在运行期间才可能发生问题。
数组溢出
当赋予数组的元素个数超过数组的长度时,就会发生溢出。例如:int a[3]={1,2,3,4,5};
数组的长度为3,初始化赋值时却赋予了5个元素,超出了数组容量,所以只能保存前三个元素,后面的元素被丢弃。
总结:在近期的数组学习中,我体会到了利用数组解决大量数据和与循环选择结构相结合解决问题的方便与快捷,所以在今后的学习中我要更加熟练的掌握所学知识,通过构建各结构之间的联系来解决问题。

收藏 打印