你每天都在做很多看起来毫无意义的决定,但某天你的某个决定就能改变你的一生。——《西雅图不眠夜》
目录
什么是C语言数组?
- 首先,从字面了解数组是一堆数字组成的集合。C语言中数组是一组固定大小且相同类型元素的集合。数组分为一维数组和二维数组。
- 数组类型的声明并不是对一个元素进行声明而是对整个数组里面的元素类型都进行声明。
- 所有的数组元素都是在一块连续的地址上的存储的,第一个元素占最低的地址,最后一个元素占最高的地址。
- 数组的下标从0开始到元素的个数减1结束。
1、一维数组的创建与初始化
1.1数组的创建格式
数组是由数组类型+数组名+数组大小组成的,其中最重要的是数组大小是一个常量表达式。结合下图理解:
🤼数组的创建格式有四种情况,如下所示:
情况1,定义一个数组并给定数组大小
int arry1[10];//未初始化的名为arry1的整形数组大小是10
情况2,定义一个常量并给定数组大小为这个常量
const int a=5;//定义一个常量a=5
int arry5[a];//未初始化的名为arry5的整形数组大小是5
情况3,数组大小为常量表达式
int arry6[5+6];//未初始化的名为arry6的整形数组大小是11
情况4,空数组
int arry7[];//未初始化的名为arry7的整形数组大小未知
温馨提示:以上均是用整形定义的,您可以定义其他类型。
注意:数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念,数组的大小可以使用变量指定,但是数组不能初始化。
1.2数组的初始化
在了解数组的创建格式后,我们来看数组的初始化。初始化就是在创建数组后给定数组里面与数组类型相同的元素。初始化又分为完全初始化和不完全初始化,我们来看代码:
1、int arry[10] = { 0 };//完全初始化
2、int arry1[6] = { 1,2,3 };//不完全初始化
3、int arry2[5] = { 1,2,3,4,5 };//完全初始化
4、char arry3[] = { 'a','b','c' };//完全初始化
5、char arry4[] = { 'a','b',66,'c' };//完全初始化
6、char arry5[] = "abcdef";//完全初始化
7、char arry6[10] = "abc";//不完全初始化
以上代码1~7我依次来讲解:
1、int arry[10] = { 0 };arry数组是完全初始化,10个元素全是0
2、int arry1[6] = { 1,2,3 };arry1数组是不完全初始化,我们初始化了前三个元素,剩余的三个元素默认初始化为0。那么前三个元素是1,2,3。后三个元素是0,0,0。
3、int arry2[5] = { 1,2,3,4,5 };arry2数组是完全初始化,5个元素都初始化了。
4、char arry3[] = { 'a','b','c' };arry3数组是完全完全初始化,它不指定元素的个数。但编译器通过初始化内容来确定该数组元素的个数。
5、char arry4[] = { 'a','b',66,'c' };arry4也是完全初始化,它也没指定元素的个数,编译器通过初始化内容来确定该数组元素个数。其中66虽然是整型数字,但是数组类型是char所以编译器也认为66对应的是字符B。B的ASCLL码是66。
6、char arry5[] = "abcdef";