C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt

C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt

ID:50084481

大小:460.00 KB

页数:67页

时间:2020-03-08

C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt_第1页
C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt_第2页
C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt_第3页
C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt_第4页
C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt_第5页
资源描述:

《C语言程序设计教程 教学课件 作者 王秀贵 等 第6章 数组与字符串.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章数组与字符串概述一维数组数组排序多维数组数组的应用字符串与字符数组最常用的字符串库函数实例——老鼠走迷宫问题第页共67页6.1概述假设要处理100个学生的某一门课程的成绩,例如,将它们从高分到低分排序,并计算它们的平均分和不及格率。这是一个很简单的问题。但是,如果读者仅用前面所学的知识,试图写出一个程序来完成这一工作,还是相当复杂的。然而,这个问题如果用数组来求解简直是“小菜一碟”。数组是求解这一类问题的利器。事实上,就上面这个例子而言,我们可以定义一个名为grades的量,它不是代表某个学生的一门成绩,而是代表整个“组”(100个学生)的同一门

2、课程的成绩。学生个体只是这个“组”中的一个元素。我们称grades为数组,grades就是数组名。数组中的每一个元素都可以由一个被称为“下标”的数字来标明,以反映该学生的成绩存放在数组中的位置。第页共67页在数学中,带下标的变量ai写作C语言的等价形式是:a[i]类似地,表达式grades[10]表示数组grades的中的第11个元素。注意,它的第1个元素是grades[0]。由以上讨论可知,数组是C语言组织和描述较复杂的数据对象的基本工具之一。数组作为一种构造数据类型,它是由具有相同数据类型的一串元素组成的。第页共67页6.2一维数组一维数组的定义数

3、组名与指针一维数组的初始化引用数组元素第页共67页6.2.1一维数组的定义程序员只有在定义了数组元素的类型和个数以后,编译器才会为该数组分配空间。如果要求编译器为名为grades的数组分配100个整数空间,使用如下定义语句:intgrades[100];其中,方括号中的100表示数组最多可以有100个元素,即数组长度或称数组大小为100,它必须是一个整数或整型常量表达式;grades前面的int表示数组的元素类型。一个数组中的所有元素都被分配在一片连续的内存空间中。在C语言中,表示数组元素位置的“下标”总是从0开始,即数组grades的第1个元素是gr

4、ades[0],它的最后一个元素是grades[99],如图所示。第页共67页有100个元素的数组第页共67页也可以用同一条定义语句定义多个数组,并为这些数组的元素指定你所需要的任何数据类型。例如,语句:floatx[15],y[10];定义了元素类型为float的名为x和y的两个数组,它们的元素个数分别是15和10。下面来详细地探讨图6-1中的数组grades。在C语言中,封闭数组下标的一对方括号实际上被定义为运算符,它与圆括号具有相同的优先级。表达式grades[0]代表数组grades的第1个元素,它有一个确定的存储位置。读者可以根据需要给它赋值

5、。例如:grades[0]=85;第页共67页其含义是数组grades的第1个元素所对应的那个学生的成绩是85分。事实上,我们可以通过类似下面的循环完成对100个学生成绩的输入:for(i=0;i<100;++i)scanf("%d",grades[i]);细心的读者也许已经发现,本章开篇提到的计算100个学生的平均分和不及格率的问题,因为引进数组而变得非常简单。读者很快就会看到,排序也将不成问题。第页共67页6.2.2数组名与指针表达式grades[0]是一个左值,它的类型是整型。在C语言中,数组名不是变量而是一个地址常量,它的值是数组第1个元素的地

6、址。也就是说,数组名grades的含义是grades[0]在内存中的存储位置。这也就意味着下列等式成立:grades==&grades[0]数组名的类型是“指向元素类型的常量指针”。我们再考虑下面的例子:Inta[100],b[100];int*p;则下面两个赋值表达式不但是合法的,而且它们的结果也是一样的:p=&a[0]p=a第页共67页因为表达式&a[0]的值就是元素a[0]的存储地址值,也正是数组名a的值。这两个表达式都使得指针p指向数组a的第1个元素。我们发现,在后一个表达式中,数组名a实实在在地蜕变为指针。因此,人们又将数组名称为常量指针。因

7、为数组名是一个(指针)常量,而不是(指针)变量,所以,在任何时候,都不能企图修改常量的值。例如,下面两个赋值语句都是非法的:a=b;a=p;第页共67页我们说数组名是一个常量指针,但读者不要根据这个事实得出数组名和指针是一回事的结论。数组名与指针有太多的相似点,甚至很多时候,数组名可以作为指针使用。但是,我们也有太多的理由,证明数组名不是指针。首先,数组名的内涵在于其表征的实体是一种数据结构,而且我们称这种数据结构为数组。下面例子证明了这一点。第页共67页【例】数组名不是指针。#includeintmain(){charaStr[10

8、];char*psz=aStr;printf("%d",sizeof(aStr));pri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。