C语言课件第08章.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《C语言课件第08章.ppt》由会员分享,可在线阅读,更多相关《C语言课件第08章.ppt(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第8章章 一维数组的应用一维数组的应用8.1 了解一维数组了解一维数组8.2 一维数组的简单应用一维数组的简单应用8.3 利用地址和指针访问数组元素利用地址和指针访问数组元素8.4 与一维数组有关的参数传递与一维数组有关的参数传递8.5 一维数组操作中的常用算法介绍一维数组操作中的常用算法介绍8.1 了解一维数组了解一维数组8.1.18.1.1一维数组的用途一维数组的用途8.1.28.1.2一维数组的定义一维数组的定义在在C语语言言中中,数数组组必必须须先先定定义义才才可可以以使使用用。当当定定义义数数组组时时,要要传传递递给给编编译译器器两两方面的信息:方面的信息:数组共有多少个元素?数组
2、共有多少个元素?每个元素占多少个字节?每个元素占多少个字节?根根据据以以上上信信息息,编编译译器器决决定定分分配配多多大大的存储空间给该数组使用。例如:的存储空间给该数组使用。例如:int a10;这这里里a是是数数组组的的名名称称,方方括括号号中中的的10表表明明数数组组一一共共有有10个个元元素素,下下标标应应该该从从0开开始始到到9结结束束;类类型型名名int限限定定数数组组a的的每每个个元元素素中中只只能能存存放放整整型型数数。根根据据这这一一定定义义,系系统统将将为为数数组组a开开辟辟能能容容纳纳10个个整整型型数数的的连连续续存存储单元。储单元。一维数组定义语句的语法形式为:一维数
3、组定义语句的语法形式为:类类型型名名 数数组组名名常常量量表表达达式式,;说明说明(1)“类类型型名名”决决定定了了数数组组中中可可以以存存放放的数据的类型。的数据的类型。(2)“数数组组名名”和和变变量量名名相相同同,必必须须遵遵循标识符的命名规则。循标识符的命名规则。(3)“常常量量表表达达式式”代代表表的的是是数数组组元元素素的的个个数数,也也就就是是数数组组的的长长度度。它它必必须须是是无无符符号号整整型型常常量量,不不允允许许是是0、负负数数和和浮浮点点数数,也不允许是变量。也不允许是变量。(4)C语语言言中中规规定定:每每个个数数组组第第一一个个元元素素的的下下标标固固定定为为0,
4、称称为为下下标标的的下下界界;最最后后一一个个元元素素的的下下标标为为元元素素个个数数减减1,称称为为下下标的上界。标的上界。(5)数数组组的的定定义义可可以以和和普普通通变变量量的的定定义出现在同一个定义语句中。例如:义出现在同一个定义语句中。例如:float k,x5,y20;以以上上语语句句在在定定义义单单精精度度变变量量k的的同同时时,定定义义了了两两个个单单精精度度型型的的一一维维数数组组x和和y。数数组组x共共有有5个个元元素素,下下标标的的使使用用范范围围是是04;数数组组y共共有有20个个元元素素,下下标标的的使使用用范范围围是是019。8.1.38.1.3一维数组元素的引用一
5、维数组元素的引用数数组组一一经经建建立立,在在内内存存中中就就占占据据着着一一串连续的存储单元。串连续的存储单元。8.1.48.1.4一维数组的初始化一维数组的初始化8.2 一维数组的简单应用一维数组的简单应用例例8.18.1 编编写写程程序序,在在数数组组x中中存存储储自自然数然数120,然后按以下要求输出数据:,然后按以下要求输出数据:按逆序分两行输出元素值。按逆序分两行输出元素值。在在一一行行上上输输出出所所有有下下标标为为偶偶数数的的数数组元素。组元素。在在一一行行上上输输出出所所有有值值为为偶偶数数的的数数组组元素。元素。问题分析问题分析本本例例题题涉涉及及的的是是对对数数组组元元素
6、素进进行行操操作作的的基基本本算算法法。对对一一维维数数组组各各元元素素的的访访问问,通通常常是是在在单单重重循循环环中中实实现现。通通过过循循环环变变量量与与循循环环体体内内语语句句的的配配合合,可可以以灵灵活活地地、有有选择地访问指定元素。选择地访问指定元素。读读者者在在阅阅读读以以下下程程序序时时,应应理理解解数数组组元元素素下下标标与与数数组组元元素素值值的的区区别别;掌掌握握如如何何用用循循环环变变量量控控制制数数组组元元素素的的下下标标;以以及及如如何在连续输出的过程中控制输出换行。何在连续输出的过程中控制输出换行。源程序如下:源程序如下:main()int x20,i;for(i
7、=0;i=0;i)/*控制从数组尾部开始输出控制从数组尾部开始输出*/printf(%3d,xi);if(i%10=0)printf(n);/*控制每输出控制每输出10个元素后换行个元素后换行*/printf(输出下标为偶数的元素:输出下标为偶数的元素:n);for(i=2;i20;i+=2)printf(%3d,xi);printf(n);printf(输出值为偶数的元素:输出值为偶数的元素:n);for(i=0;i20;i+)if(xi%2=0)printf(%3d,xi);printf(n);程序的运行结果如下:程序的运行结果如下:分两行逆序输出:分两行逆序输出:20 19 18 17
8、16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1输出下标为偶数的元素:输出下标为偶数的元素:3 5 7 9 11 13 15 17 19输出值为偶数的元素:输出值为偶数的元素:2 4 6 8 10 12 14 16 18 208.3 利用地址和指针访问利用地址和指针访问数组元素数组元素8.3.18.3.18.3.18.3.1数组名、元素地址及指针的关系数组名、元素地址及指针的关系数组名、元素地址及指针的关系数组名、元素地址及指针的关系通通过过前前面面的的知知识识积积累累和和本本节节的的进进一一步步介绍,读者应该建立起如下概念。介绍,读者应该建立起如下概念。(1)数数
9、组组是是一一种种构构造造数数据据类类型型。数数组组名名代代表表着着这这个个数数组组所所占占连连续续存存储储空空间间的的起始地址。起始地址。这这个个地地址址是是在在定定义义数数组组时时由由系系统统所所分分配配的的,不不可可以以人人为为改改变变。因因此此,可可以以认认为为数组名是一个地址常量。数组名是一个地址常量。如有定义:如有定义:int x5,y5,m=3;则语句:则语句:x=&m;x=y;y+;都都是是错错误误的的。数数组组名名x和和y作作为为地地址址常常量可以使用,不可以重新赋值。而表达式:量可以使用,不可以重新赋值。而表达式:x+1、y+2则则是是合合法法的的。它它们们表表示示以以数数组
10、组名名为为首首地址增加一个偏移量后的地址值。地址增加一个偏移量后的地址值。(2)就就整整体体而而言言,每每个个数数组组元元素素都都是是数数组组这这个个集集合合中中的的一一分分子子,由由于于数数组组所所占占地地址址空空间间是是连连续续的的,通通过过数数组组名名这这个个首首地地址址就就可可以以找找到到数数组组中中的的所所有有元元素素;就就个个体体而而言言,每每个个数数组组元元素素都都可可以以看看作作是是一一个个带带下下标标的的变变量量,它它完完全全可可以以像像普普通通变变量量一一样样进进行行求求地地址址运运算算。因因此此,用用数数组组名名表表示示的的地地址址与与数数组组元元素素的的地地址址之之间间
11、就就有有如如下下关关系:系:x+1等价于等价于&x1、y+2等价于等价于&y2(3)指指针针变变量量是是用用来来存存放放地地址址值值的的,它它可可以以通通过过加加、减减一一个个整整数数在在一一串串连连续续的的存存储储单单元元中中移移动动,并并可可以以利利用用间间接接访访问问运运算算符符得得到到指指针针所所指指单单元元的的内内容容。因因此此,数数组组名名、数数组组元元素素和和指指针针变变量量之之间间可可以以通通过过数数组组元元素素的的地地址址建建立立起起关关系系。若若有有如如下下定定义:义:int a6=1,2,3,4,5,6,*p;则语句:则语句:p=a;等价于等价于 p=&a0;都都使使指指
12、针针变变量量p中中存存放放了了数数组组a的的首首地地址址,即即p指指向向了了数数组组a的的第第一一个个元元素素a0。在在这一前提下,表达式:这一前提下,表达式:*p 等价于等价于*a都代表数组的第一个元素都代表数组的第一个元素a0。而:而:*(p+2)等价于等价于*(a+2)都代表数组的第三个元素都代表数组的第三个元素a2。语句:语句:p+;表表示示将将指指针针p移移动动一一个个位位置置,指指向向数数组组a的第二个元素的第二个元素a1。但语句:但语句:a+;则是非法的,因为则是非法的,因为a是常量。是常量。由由此此可可见见:数数组组名名是是地地址址常常量量;指指针针是是存存放放地地址址的的变变
13、量量,它它们们都都可可以以用用来来描描述述数数组组元元素素的的地地址址,进进而而可可以以得得到到元元素素的的内内容容。所所以以,我我们们不不仅仅可可以以直直接接用用带带下下标标的的变变量量形形式式来来访访问问数数组组元元素素,还还可可以以通通过过数数组组的的首首地地址址(数数组组名名)和和指指针针来来访访问问数数组组元元素素,从从而而大大大大地地增增加加了了数数组组使使用用的的灵灵活活性性,但但也也同同时时增增加加了了初初学学者者全全面面掌掌握握C语语言的难度。言的难度。8.3.28.3.2 通通过过数数组组首首地地址址访访问问数组元素数组元素设有如下定义:设有如下定义:int x10,i;通
14、通过过上上一一节节的的叙叙述述已已知知:数数组组名名是是数数组的首地址,从而有:组的首地址,从而有:x+0 等价于等价于&x0 x+1 等价于等价于&x1 x+i 等价于等价于&xi在在得得到到地地址址后后,可可以以通通过过间间接接访访问问运运算符来引用地址所在的存储单元。因此有:算符来引用地址所在的存储单元。因此有:*(x+0)或或*x 等价于等价于*&x0 即即x0 *(x+1)等价于等价于*&x1 即即x1 *(x+i)等价于等价于*&xi 即即xi如如果果要要利利用用数数组组首首地地址址对对x数数组组的的所所有有元元素素逐逐个个输输入入输输出出,则则可可由由以以下下程程序序段段实实现:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课件 08
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内