C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计
“ 目录 C++语言程序设计 基本知识 编程技能 刨根问底 字符数组输入输出 数组 字符数组与字符串 多维数组在内存中的映像 枚举类型 枚举类型内存空间 结构类型内存空间 数组 枚举类型 结构类型 联合类型 字符数组与字符串 多维数组 冒泡排序 结构数组 C++语言程序设计
4.1 数组 字符数组 定义并且初始化字符数组: char型的数组称为字符数组,通常用来存储字符串。 char chArray[] = "hello world!"; C++语言程序设计
4.1 数组 初始化字符数组 两种方法: (1)用双引号内的字符串初始化字符数组 例:char array[10]={"hello"}; 可以省略大括号,简化为: char array[10]= "hello"; 用这种方法初始化时,系统自动在数组最后一个元素后面补'\0'(结束符)。 C++语言程序设计
4.1 数组 (2)用字符常量来初始化字符数组 例: char array[10]={ 'h', 'e', 'l', 'l', 'o', '\0'}; 该方法将初始值一一列举在初始化列表中,这种方法通常用于输入不容易在键盘上生成的不可见字符。 例:下面的代码中初始化值包含两个制表符。 char array[10]={ '\a', ' \t', ' \b', ' \t', '\0'}; 此种方式下,编程者要自己添加字符串结束符('\0'),同时不要忘记为最后的'\0'留出空间。 C++语言程序设计
4.1 数组 字符数组的赋值有两种方法 (1)一个字符一个字符赋值数组元素 (2)用C的库函数strcpy(字符数组1,字符串2) 例: char array[10]; array[0]= ‘h’; (2)用C的库函数strcpy(字符数组1,字符串2) 例:char str1[10]=” “, str2[]=”hello”; strcpy(str1, str2); 或 strcpy(str1, ”hello”); 不能用赋值语句将一个字符串常量或字符数组直接给字符数组赋值。 str1=”hello”; //错!!!因为数组名是地址常量 C++语言程序设计
4.1 数组 多维数组的定义 定义多维数组语法形式如下: 二维数组 三维数组 n维数组 C++语言程序设计 类型标识符 数组名标识符[常量表达式1][常量表达式2]; 三维数组 类型标识符 数组名标识符[常量表达式1][常量表达式2][常量表达式3]; n维数组 类型标识符 数组名标识符[常量表达式1]…[常量表达式n]; C++语言程序设计
4.1 数组 例: bool seat[10][6]; //座位 unsigned char image[256][128];//256行128列图像 float matrix[3][3];//三元一次线性方程组的系数矩阵 char table[5][8]; //课表 二维数组元素的下标从左至右称为行、列。 char book[200][32][40]; //书 三维数组元素的下标由左至右可称为页、行、列或层、行、列。 C++语言程序设计
特别强调:数组每一维的大小必须用常量表达式声明,否则,编译会出错。这也是C和C++数组的一大缺陷:数组的使用不够灵活。 4.1 数组 在定义多维数组时,需要注意 首先要根据所要表示的对象内容,选择合适的数据类型(数组的类型,也就是数组元素的类型); 其次确定数组的维数,即几维数组(有几维就有几对中括号); 最后确定每一维的大小(中括号内)。 特别强调:数组每一维的大小必须用常量表达式声明,否则,编译会出错。这也是C和C++数组的一大缺陷:数组的使用不够灵活。 C++语言程序设计
4.1 数组 初始化多维数组 提供数组元素的全部初始值 提供部分元素的初始值 这些初始化值位于大括号内,构成初始值列表,多维数组初始化时需要使用嵌套的括号。 int a[2][4]={{4, 3, 2, 1}, {1,2,3,4}}; double d[3][4]={{l.0, 2.0, 3.0, 4.0}, {5.0, 6.0, 7.0, 8.0}, {9.0, 10.0, 11.0, 12.0}}; C++语言程序设计
4.1 数组 初始化多维数组 可以省略内层的括号,只要程序好读即可。 例如用换行的方式: int a[2][4]={ 4, 3, 2, 1, 1, 2, 3, 4 }; double d[3][4]={ 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0}; C++语言程序设计
4.1 数组 初始化多维数组 多维数组的初始化,也可以只给出部分值; 例: int a[2][4]={ 4, 3}; 则只有a[0][0]、a[0][1]分别得到初始值4和3,其余各元素的值为0。 可利用此特性将一些用做计数器的多维数组初始化为0。 例:定义并初始化二维整型计数器counts: int counts[512][256] = {0}; 这是将多维数组元素置0的最简便方法之一。 C++语言程序设计
4.1 数组 访问多维数组的元素 访问多维数组的元素时,只要指定要访问的数组元素的具体下标值即可,语法形式为: 数组名[下标表达式1]…[下标表达式n] 其中,下标表达式的个数同数组维数,“下标表达式i”(1≤i≤n)可以用常量、变量或表达式,其值大于或等于0,小于数组对应维的大小,即 0≤下标表达式i的值<第i维的大小 C++语言程序设计
4.1 数组 定义并访问数组元素 const int M = 8, N = 4; char matrix[M][N]; for (int i=0; i<M; i++) { for (int j=0; j<N; j++) cin>>matrix[i][j]; //给元素赋值,写操作 } C++语言程序设计