书目《C程序设计(第三版)》
-
(一)定义
1、数组是具有相同数据类型的一组变量,通过数组名+下标(从零开始)进行访问其中成员,数组在内存中是连续存储的;
2、构造类型(数组类型、结构体类型、共用体类型)均为连续存储的。 -
(二)一维数组
1、一维数组的定义方式为:类型说明符 数组名[常量表达式];
2、可以在定义数组时,对数组元素(全部或者其中一部分)赋初值,对全部元素赋初值时,由于数据的个数已经确定,可以不指定数组长度。 -
(三)二维数组
1、二维数组的定义方式为:类型说明符 数组名[常量表达式][常量表达式];
2、可以在定义数组时,分行给数组元素(全部或者每行的一部分——此时未被赋值的元素自动填0)赋初值,也可以将所有数据写在一个花括号内,按数组排列的顺序对各元素赋初值;
3、对全部元素都赋初值时,可以不指定第一维的长度(在内存中,数组是按行存放的,因此必须指定列数——即一行中包含几个元素),系统会根据总个数和第二维的长度算出第一维的长度。 -
(四)字符数组
1、对字符数组进行初始化时,如果字符个数大于数组长度,会产生语法错误,如果字符个数小于数组长度,只将这些字符赋给数组中前面的元素,其余元素自动定为空字符(‘\0’);
2、在C语言中,是将字符串作为字符数组来处理的,空字符(‘\0’)是字符串结束标志(在输出字符串时,碰上空字符即输出结束),字符串常量会自动添加一个空字符(‘\0’)在末尾;
3、空字符(‘\0’)不会被输出到屏幕上,但是在数组中会占用一个字符的空间,这点很重要;
4、常用字符串处理函数:
puts(字符数组):将一个字符串输出到终端
gets(字符数组):从终端输入一个字符串到字符数组,并得到字符数组的起始地址
strcat(字符数组1,字符数组2):字符串连接
strcpy(字符数组1,字符数组2)、strncpy(字符数组1,字符数组2):字符串复制
strcmp(字符数组1,字符数组2):字符串比较
strlen(字符数组):求字符串长度——不包括空字符(‘\0’)
strlwr(字符数组):字符串小写
strupr(字符数组):字符串大写 -
(五)数组作为函数参数
1、数组元素可以作为函数实参,用法与变量相同;
2、数组名也可以作为实参和形参,传递的是数组首元素的地址,形参数组和实参数组共占一段内存单元,形参数组可以不指定数组大小,形参应当用数组名或者指针变量;
3、将数组传递给函数时,数组名就是引用,所以如果函数声明时,如fuc(int &[])这样的会报错(因为不能创建引用数组,事实上,对引用的“二次利用”都不是不被允许的,所以不能创建引用的引用,不能创建指向引用的指针,也不能创建引用数组);
4、多维数组名用作形参时,可以省略第一维的大小说明。 -
(六)注意事项
1、要警惕下标的变化,确保其变化范围在指定边界内;
2、使用字符数组时,一定要给末尾的空字符(‘\0’)留出空间;
3、数组不能作为函数的返回值。