c语言程序设计05_数组.ppt
文本预览下载声明
数组 构造数据类型 数组 5.1.1一维数组的定义 一维数组的一般定义形式为: 类型标识符 数组名[整型常量表达式]; 例如: int a; int b[l0]; 注意事项: 数组名属于标识符,应遵循标识符命名规则。 数组名作为变量名不能与其它变量名相同。 数组的大小必须由常量或常量表达式定义 数组名如果出现在表达式中,它的值和含义是该数组首个元素的地址,是一个指针型常量。 数组名+n的值是数组中第n+1个元素的地址。 对数组名取地址,得到是整个数组的地址,其值虽然与数组首个元素地址值相同,但类型不同、含义不同。 【例5.1】求变量int a和int b[10]占用内存的大小: 【例5.2】求变量的值、变量地址的值、数组名的值、数组名的地址: 【例5.3】求变量地址的值和加1后的值: 5.1.2 一维数组元素的引用 下标法引用一维数组元素,形式如下: 数组名[下标] 注意事项: (1)一个数组元素实质上就是一个变量,代表内存中的一个存储单元,与相应类型的变量具有完全相同的性质。 (2)一个数组不能整体引用。 (3)C语言编译器并不检查数组元素的下标是否越界,即引用下标值范围以外的元素,如上例的a[10],编译器不提示出错信息。但在程序运行时可能引起程序运行错误,所以应避免数组操作越界。 【例5.4】下标法数组元素使用示例。 指针法引用数组元素,形式如下: *(数组元素地址) 【例5.5】指针法数组元素使用示例。 5.1.3 一维数组的初始化 指针法引用数组元素,形式如下: *(数组元素地址) 初始化赋值的一般形式为: 类型标识符 数组名[整型常量表达式]={初值表}; 其中,在{}中的各数据值即为数组各元素的初值,各值之间用逗号间隔,给定初值的顺序即为在数组元素在内存中的存放顺序。 【例5.6】数组初始化示例。 一维数组的几种初始化情形 完全初始化 部分初始化 省略数组长度的完全初始化 5.1.4 程序举例 【例5.7】从键盘上给数组输入10个整数,求出该数组的最大值及最大值的下标并输出。 【例5.8】用冒泡排序法对数组中的元素进行从小到大进行排序。 冒泡排序算法说明 5.2.1 多维数组的定义 在C语言中,从二维到多维数组本质上都是一维数组的扩展。 【例5.9】定义一个由4个元素组成,而这4个元素又分别是由3个整型变量组成的二维数组: int a[4][3]; 注意事项: 二维数组名如果出现在表达式中,它的值及其含义是该数组首个元素的地址。 数组名+n的值是数组第n+1个元素的地址。 对数组名取地址,得到的是整个数组的地址。 【例5.10】定义三个指针变量p1、p2、p3,分别保存例5.9中定义的a、a[0]、a[0][0]的地址 【例5.11】求数组元素占用内存的大小: 【例5.12】求变量地址的值和加1后的值 5.2.2 多维数组元素的引用 多维数组的引用方式与一维数组的引用方式基本相同,可以使用指针也可以使用下标 【例5.13】多维数组元素的引用 【例5.14】下标法输入、输出二维整数组。 【例5.15】指针法输入、输出二维整数组。 【例5.16】指针法输入输出二维数组的各元素。 5.2.3 多维数组的初始化 初始化一般形式为: 类型 数组名[整型常量表达式1][整型常量表达式2] [整型常量表达式3]={初值表}; 多维数组的初始化方法。 完全初始化 部分初始化 省略数组长度的完全初始化 。 5.2.4 程序举例 【例5.17】编程实现矩阵的转置(即行列互换)。 【例5.18】编程分别求矩阵的两个对角线上元素值之和。 5.3.1 字符数组与字符串的关系 字符数组与字符串的关系 以字符串的方式处理文字信息主要好处: 可以知道有效字符的长度 有大量的字符串库函数可以使用 赋初值简便 【例5.19】输出一个字符数组中每个元素的ASCII码 注意事项: 使用C语言本身的字符串功能或C库函数提供的字符串处理功能,用户提供的必须也是字符串,即有效字符后面要有’\0’做结束标志。 使用C语言本身的字符串功能或C库函数提供的字符串处理功能,返回的结果也都是字符串,即有效字符后面都有’\0’ 做结束标志。 用户定义的用来保存字符串的字符数组必须要大于被处理的字符串的长度,使用C语言本身的字符串功能或C库函数提供的字符串处理功能都不检查字符数组大小与字符串长度是否匹配。 字符串的长度不包括字符串末尾的’\0’,所以保存字符串的字符数组中长度要大于等于字符串的长度加1。 5.3.2 字符串的输入输出 使用scanf函数输入字符串 【例5.20】scanf输入字符串 使用printf函数输出字符串 【例5.21】printf输出字符串 使用gets函数输入字符串、 【例5.22】ge
显示全部