




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 数组,一维和二维数组的定义 数组元素引用 字符数组和字符串 数组应用的基本算法,7.1.1 一维数组的定义 数组的维数是指表示数组使用的下标个数,如果数组中每个元素只带有一个下标,称这样的数组为一维数组。 定义形式为: 类型说明符 数组名常量表达式; 类型说明符指出数组元素的数据类型,数组名是标识符,元素个数使用方括号和常量表达式。 【讨论】C语言数组大小的规定。 【讨论】如何理解数组名。,7.1一维数组,7.1.2 一维数组的引用 C语言中,一个数组不能整体应用,数组名是一个地址常量,不能对其赋值,只能使用数组中的元素。 方法: 数组名下标 【讨论】 C语言使用下标的规定。,7.1一
2、维数组,7.1.3 一维数组存储 C系统定义数组时,根据定义语句中的空间需求,分配足够的的存储空间,数组元素顺序存放在这片存储单元中。下标为0的元素排在最前面,每个元素占据的存储空间完全相同。 计算数组的空间开销,应该使用sizeof算符,方法有二: (1)存储容量= 数组元素个数*sizeof(数组元素类型名) (2)存储容量= sizeof(数组名),7.1一维数组,7.1.4 一维数组初始化 一维数组定义时可以用花括号对全部或前面一部分数组元素赋初值,叫初始化。通过初始化也可以定义一维数组。 数组也是变量,在作用域和存在期方面与简单变量的规定相同,全局数组在程序开始执行前建立,在静态存储
3、区存储,定义全局数组时,可以进行初始化,如果没有,系统自动将全局数组的值初始化为0。局部数组存储在动态存储区中,建立时如果没有进行初始化,其值是不确定的。,7.1一维数组,7.1.4 一维数组初始化 例: 解释下面数组定义和初始化的意义: int a6=1,2,3,4,5,6; int a6=1,2; int a3=1,2,3,4; int a=1,2,3,4,5,6; 【讨论】例题的结果及原因。 7.1.5 一维数组实例,7.1一维数组,7.2.1 二维数组的定义 二维数组:数组中每个元素带有两个下标。 定义形式为: 类型说明符 数组名常量表达式1 常量表达式2; 逻辑上,可把二维数组看成是
4、一个矩阵,常量表达式1表示矩阵有几行,常量表达式2表示矩阵的列数。 可以把二维数组看作是一种特殊的一维数组,它的元素又是一维数组。即二维数组是数组的数组。 【讨论】 int a34; 的矩阵理解和数组之数组理解。 【讨论】多维数组的理解问题。,7.2 二维和多维数组,7.2.2 二维数组的引用 引用二维数组元素时必须带有两个下标, 形式如下: 数组名下标1下标2 7.2.3 二维数组存储 二维数组在内存中占据一系列连续的存储单元,数组元素按行顺序存放,先放行下标是0的元素,再放行下标是1的元素,. 数组int a34的存储示意,7.2 二维和多维数组,7.2.4 二维数组初始化 二维数组定义时
5、也可以用花括号对全部或前面一部分数组元素赋初始化。通过初始化也可以定义二维数组。 例: 解释下面数组定义和初始化的意义: int a23=1,2,3,4,5,6; int a23=1,2; int a23=1,2,3, 4,5,6 ; int a34=1,2, 3, 4,5,6; int a34=1,2,3, ; int a23=1,2,3,4,5,6,7,8; int a3= 1,2,3,4,5,6; int a3= 1,2,3,4,5,6,7; 7.2.5 二维数组实例,7.2 二维和多维数组,7.3.1 字符数组 字符数组是元素数据类型是字符类型的一维数组。字符数组引用、存储、初始化的方
6、法都与一维数组相同,只是要注意字符数组的元素是字符,有特殊的字面表示格式。 字符数组初始化的方法也和一维数组相同。 例:char s5=1,2,3,4,5; char s5=1,2; char s=1,2,3,4,5; 初始化时没有赋值的元素值为空是编码为0的字符,叫空字符,用0表示。它即不是空格字符(32),也不是0字符(48)。,7.3 字符数组和字符串,7.3.2 字符串 C语言中用双引号”括起来的任意字符序列,就是字符串。 C语言中,顺序书写的两个字符串中间仅由空格、换行符或制表符分隔,编译时,自动将这些字符串连接成一个长的字符串。 字符串里不能直接出现双引号”(被认为是结束符),需用
7、换意序列“”表示双引号字符” 对程序中的字符串字面量,系统用字符数组方式保存,连续、顺序存放每一个字符,最后加一个空字符“0”做结束标志。 结束标志“0”是字符数组与字符串的区别。 【讨论】程序中为什么需要字符串的结束标志? 【讨论】 C语言表示字符串长度的方法,7.3 字符数组和字符串,7.3.2 字符串 C语言中没有字符串变量,通过字符数组可以实现相关的功能,字符串是字符数组最普通的具体应用。 当要用字符数组存储(可能变化的)字符串时,应考虑: (1)定义变量时,考虑可能存储的最长字符串的长度。 (2)在字符数组中顺序存放字符串的每一个字符,最后加上“0”。 (3)对字符数组初值赋值方法的
8、扩充,例: char str= “China”; char str=“China”; char str10=“China”; char str5=“morning!”; 字符串操作中,要注意控制不要超出字符数组的空间限制。,7.3 字符数组和字符串,7.3.3 字符串数组 字符串数组就是数组中的每一个元素又都是存放字符串的数组。 可以将一个二维字符数组看作一个字符串数组。 例:char line1080; 数组line共有10个元素,每个元素可以存放80个字符(79个普通字符,一个结束字符),第一个下标决定字符串个数,第二个下标决定字符串的最大长度。line是有10个字符串的数组,这些字符串的
9、最大长度为79。,7.3 字符数组和字符串,7.3.3 字符串数组 字符串数组的初始化方法: 例: char str35=“a”, “ ab”, “abc”; /*根据定义的大小初始化*/ char str5=“a”, “ab”, “abc”; /*根据右边字符串的个数,定义数组大小*/ 本数组的存储示意如下:,7.3 字符数组和字符串,7.3.4 字符串函数 C标准函数库中提供了许多相关的函数,它们的原型说明在两个头文件中,ctype.h说明了一组字符类型判断函数,string.h说明了许多字符串处理函数。另外标准输入输出函数库中还有用于字符串输入和输出的函数。 7.3.4.1字符串输入输出
10、 1. scanf的s 格式串可以实现字符串的整体输入。例: char str20; scanf(“%s”,str); /*str是地址 */ 2. printf的s格式串可以实现字符串的输出,例: printf(“%s”,str); /*str是地址 */ 3. gets从终端输入字符串行 形式:gets(str); str是存放字符串的起始地址。可以是字符数组名、字符数组元素地址或下一章将要介绍的字符指针。,7.3 字符数组和字符串,7.3.4.1字符串输入输出 -包含头文件stdio.h 4.puts向终端输出字符串 形式:puts(str); str是输出字符串的起始地址,从这一地址开
11、始,依次输出存储单元中的字符,直到遇到第一个0为止。并自动输出一个换行符。 str是存放字符串的起始地址。可以是字符数组名、字符数组元素地址或下一章将要介绍的字符指针。 7.3.4.2字符串处理函数 - 包含头文件string.h 1.字符串复制函数strcpy。调用形式如下: strcpy(s1,s2) 2.字符串连接函数strcat。调用形式如下: strcat(s1,s2),7.3 字符数组和字符串,7.3.4.2字符串处理函数 3.求字符串长度函数strlen。调用形式如下: strlen(s) 4.字符串比较函数strcmp。调用形式如下: strcmp(s1,s2) 【讨论】 C语
12、言字符串相等的概念和字符比较规则 7.3.4.3字符判断函数 -包含头文件ctype.h。 字符判断函数大部分是用宏实现的。返回值都是真和假值,即非0和0。如isalpha(c):判断c是否为字母;isdigit(c):判断c是否为数字;isupper(c ) : 判断c是否为大写字母. 。 【讨论】使用字符判断函数设计程序的好处 7.3.5 字符数组和字符串实例,7.3 字符数组和字符串,首先,如果数组元素属于基本类型,这些元素可以作为基本类型使用,当然可以作为函数的实参,送给函数处理,实参形参传递的是数组元素的值,形参操作不影响实参的值,处理的结果以返回值的方式带回,也可以赋给数组元素。这
13、种方式处理数组元素与处理基本类型的变量没有什么区别。 第二,可以利用全局变量,将要处理的数组定义成全局数组,使每一个函数都能操作需要的数组。 用数组作函数的参数,这样可以在函数里处理整个数组的数据,也可以通过不同调用完成同一函数对不同数组的同样计算。 数组名作函数参数,实参形参传递的是数组名表示的地址值(依然是值传递)。因此,实参和形参数组操作的是同一片空间。形参数组操作可以改变实参数组元素的值。这是用数组作参数和用简单变量作参数最大的不同。 实参数组和形参数组的类型必须一致,如果需要在函数中知道处理元素的个数,可以另设一个表示元素个数的参数。 7.5 实例,7.4 数组作为函数的参数,本章小结,本章主要知识点: 数组基本概念。数组定义,数组类型,数组唯数,数组存储,数组元素和数组下标概念,数组说明,初
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮企业废弃物资源化利用与循环经济研究报告
- 城市污水处理厂深度处理工艺在2025年城市污水处理厂升级改造评估报告
- 教师参观廉政教育基地心得体会
- 市政维护环境整治方案(3篇)
- 2025年国际禁毒日禁毒知识竞赛题库及答案(310题)
- 吉水砂石管理办法
- 后勤区域管理办法
- 吸粪车辆管理办法
- 商业促销管理办法
- 商务商旅管理办法
- 基孔肯雅热预防宣讲课件
- 重庆代建管理办法
- 2025房屋买卖合同模板下载
- 妇产科医德医风奖惩措施规范化研究
- 消防维保入场承接查验表
- 年度在职培训管理办法
- 儿童意外伤害防治课件
- 装修带家具家电合同范本
- 2025北京海淀高二下学期期末化学试卷含答案
- 备战2026年高考数学模拟卷(新高考II卷专用)(解析版)
- 中国十二碳二元酸行业调查报告
评论
0/150
提交评论