第六章 数组
特点:同一数组中的所有元素都属于同一种数据类型(int,char,float)数组元素用数组名和相应的下标来确定。
方法:一个数组元素其实就是一个变量(可以称为带下标的变量)
1.一维数组
类型名 数组名常量表达式
如:float s25;
1.1 定义数组
定义数组有4个注意:
- 数组名属于用户定义标识符。要遵守标识符命名规则简言之,不用能关键字啥的命名
- 定义一维数组时数组名后必须用一个方括号[]将常量表达式括起来,常量表达式的值表示所定义数组共有多少个元素(数组长度或数组的大小)如下面是非法的定义,int a{10}; int a(10); 正确定义:int a10;
- 定义数组时方括号中的表达式不能含有==变量==。另外表达式的值必须大于零且为正整数。下面是非法定义:int ax;x是变量 int a1.5; int a-10;
- C语言每个数组中分配空间时是连续分配的
1.2 一维数组的引用格式
数组名下标
注:C语言中不能对数组进行整体引用只能单独饮用其中的元素。引用时下标可以是表达式。
char a10;
a0='A';
a3 7='b';
记住:数组元素的下标值在(0~N-1之间)
1.3 一维数组的初始化
格式: 类型名 数组名常量表达式={初值1,初值2,...}
注意:
- 定义一位数组时,可以将各元素的初始值依次放在一对{}中给数组,且初值之间用一个逗号分隔int a5={19,45,66,90,100,80};
- 多则出错,少则补0
- 定义赋初值的个数等于数组长度,则数组长度可以省略int a[]={19,45,66,90,100,80};
- 一个也不给则是随机值
- 只能在定义数组的同时用{}|给数组元素整体赋值
2. 二维数组
2.1 二维数组的定义格式
类型名 数组名 常量表达式1
如:
int a10;
char b3;
float s7;
注:
- 数组名要遵守用户自定义标识符的命名规则
- 定义二维数组第一个方括号常量表示行数,第二个方括号常量表示列数.如: int a4*5; iint a4;
- 定义数组时,方括号不能含有变量,且表达式的值必须是大于0的正整数 如: int i=3; int ai; 不合法
- 在内存中二维数组元素的存放连续存放的,遵循着先行后列原则
2.2 二维数组的引用格式
数组名 行下标
注:
- 不能整体引用,只能引用其中的元素
- 引用二维数组元素时,必须有行下标和列下标两个下标.从0开始依次加1.
2.3 二维数组的初始化
方法1:将初值依序放在一对{ }中,与一维数组初始化格式相同
例如:int a2={1,2,3,4,5,6};
方法2:定义二维数组同时,按行初始化每一行初值均用一对{}括起,采用嵌套的{}格式.
例如:int a2={{1,2,3},{4,5,6}};
注意:定义二维数组的同时给数组初始化,则可以省略行数,但列数不能省略.
例如:
int a={1,2,3,4,5,6} 没问题
int a2={1,2,3,4,5,6} 非法
int a; 非法,必须得有数据
3.字符数组
引子:c语言中没有字符串变量,那么如何存储字符串?
方法1:字符数组来存放
方法2:字符型指针变量
3.1 字符数组的初始化
char s[]={'a','b','c','d','e'};
与其他类型数组初始化方式一样,只是其初始值是字符.
字符串:
因为字符串最后都有一个字符串结束符'