数组是具有相同类型数据的集合,它们使用一个名字来表示。
6.1一维数组
6.1.1一维数组的定义
一维数组声明的一般形式为:类型名 数组名【数组元素总数】;类型名表明数组的类型,可以是任意,一种数据类型,数组名是用户定义的数组标识符,方括号数组元素总数是常量表达式,用来指定数据元素的总数,也称为数组的长度。
对于数组类型说明应注意以下几点:
1.数组的类型指数组元素的取值类型。对于一个数组只能有一种类型,其所有元素的数据类型都是此种类型。
2.数组名必须是合法标识符,也就是说必须符合标识符的命名规定。
3.数组不能与程序中的其他变量同名。
4.若用方程括号中的整数n来表示数组元素的总称,则数组的第一个元素的下标为0,最后一个为n-1。
5.不能在方程括号中用变量来表示元素的个数。
6.可以使用在编译预处理#define中定义的符号常量。
7.允许在同一个说明相同类型的多个数组和多个变量。
6.1.2一维数组元素的引用
数组元素是数组的基本单元,他是一种变量,其标识方法为数组名后跟下标,下标指定元素在数组中的顺序号。
下标只能为整形常量或整型表达式,如果为小数,编译时将自动取整数组元素通常也称为下标变量。必须先定义数组,才能使用下标变量。
6.1.3一维数组的初始化
在对数组进行声明的同时就给数组中各个元素,复制的方法称为数组初始化。
在“{}”中的各个数据值即为各对应元素的初值,各值之间用逗号间隔。
对数组的初始化还有以下几点规定:
1.可以只给部分元素赋初值,当“{}”中值的个数少于元素个数时。只给最前面部分元素赋给定值,其余元素不赋值。
2.只能给元素逐个赋值不能给数组整体赋值。
3.若在声明时,没有指出数组元素的个数。而是对元素进行初始化,则编译器会根据做出的初值的个数来决定数组的大小。
6.1.4一一维数组的应用举例
常用的动态赋值方法
1.在程序的运行中,使用循环语句对数组元素进行赋值。
2.在程序的运行中,用已知数组给另一数组赋值。
3.在程序的运行中,用本数组中已经赋值的元素给没有赋值的元素赋值。
6.2二维数组
6.2.1二维数组的定义
二维数组类型定义的一般形式是:
类型符 数组名 [下标1总数]、【下标2总数】
6.2.2二维数组元素的引用
二维数组的元素也称为双下标变量。其表示形式为:数组名[下标1]【下标2】下表变量 和数组说明在形式上有些相似,但两者具有完全不同的含义。
数组说明的方括号中给出的是某一维的长度,即可取下标的最大值,而数组元素中的下标是该元素在数组的位置标识。
6.2.3二维数组的初始化
二维数组初始化赋值应注意以下问题
1.可以只对部分元素赋初值,未赋初值的元素自动取0值。只对每一行的第一列元素赋值,其余的元素为0.
2.若对全部元素赋初值,第一维的长度可以省略。系统将依据元素个数来判断第一维的长度。
6.3字符数组
6.3.1字符数组的定义引用和初始化
1.字符数组的定义
用来存放字符型数据的数组称为字符数组。
2.字符数组的初始化
若“{}”中提供的初值的个数(也就是字符个数)大于数组长度,则是错误的。若初值个数小于数组长度,则将这些字符赋给数组中面前的那些元素,其余的元素自动定为空字符串,也就是'\0’。
3.字符数目元素的的引用
可以引用字符数组中的一个元素,得到一个字符。
4.字符串和字符串结束标识
当把一个字符串存入一个数组时,也要把结束符‘\0’存入数组,以此作为字符串是否结束的标识。
main()
{
char c[]="FOXBASE \nd BASE";
printf("%s\n",c);
}
注意:本例printf函数中,使用的格式字符串为“%s”,表示输出的是一个字符串。而在输出表列中给出数组名即可。
6.3.2字符串处理函数
c语言提供了丰富的字符串处理函数,大致可分为字符串的输入、输出、合并、修改、比较、转换、复制、搜索几类。
1.字符串输出函数puts
功能:把字符数组中的字符串输出到显示器,即在屏幕上呈示该字符串。
2.字符串输入函数gets
功能:从键盘上输入一个字符串。本函数得到一个函数值。即为该字符数组的首地址。
gets函数并不一空格作为字符串输入结束的标识,而只以回车作为输入结束。
3.字符串连接函数strcat
功能:把字符数组2中的字符串连接到字符数组1中字符串的后面,并删去字符串1后的串标识'\0'。本函数返回值是字符数组1的首地址。要注意的字符组1应定义足够的长度,否则不能全部装入被连接的字符串。
4.字符串复制函数strcpy
功能:把字符数组2中的字符串复制到字符数组1中,串结束标识'\0'也一同复制,字符数组2可以是一个字符串常量,这时相当于把一个字符串赋予一个字符数组。本函数要求字符数组1应有足够的长度,否则不能全部装入所复制的字符串。本函数执行后,字符数组1中原来的内容被新的内容所覆盖。
注:c语言不允许用赋值语句把字符串赋给一个字符数组。
5.字符串比较函数strcmp
功能:按照字符串的ASCII码值顺序比较两个数组中的字符串,并由函数返回值返回比较结果。
6.测字符串长度函数strlem
功能:测字符串的实际长度并作为函数返回值。
7.大写变小写函数strupr
功能:把字符串中的大写字母变成小写字母。
8.小写变大写函数strupr
功能:把字符串中的大小写字母变成大写字母。