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