版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、10.3.3用数组名作为函数参数,用数组名作为函数参数,由于实参数组名代表该数组首地址。而形参是用来接收从实参传递过来的数组首地址的。所以当用数组名作参数时,如果形参数组中各元素的值发生变化,实参数组元素的值随之变化。因为实参数组和形参数组都指向了数组在内存中的同一块存储位置.,例:E3.C,说明:,C语言调用函数时虚实结合的方法都是采用“值传递”方式,当用变量名作为函数参数时传递的是变量的值,当用数组名作为函数参数时,由于数组名代表的是数组起始地址,因此传递的值是数组首地址,所以要求形参为指针变量。,例:E6.C,例10.7将数组a中n个整数按相反顺序存放,3,7,9,0,11,6,7,5,
2、4,2,i,j,p,例10.8从10个数中找出其中最大值和最小值。,例:E4.C,73,27,9,10,13,69,57,95,8,22,max,min,pend,例10.9 用选择法对10个整数排序。,选择排序法,选择排序法首先从数组中,选择最小的1个元素,将其和位于第1个位置的元素交换;接着,从剩下的n-1个元素中,选择次小的1个元素,将其和第2个位置的元素交换;这样不断重复,直到最后两个元素。 例如,对以下5个数据的排序过程为: 初始数据,116,169,105,120,114,P=0,Min=0,第一次排序结果,116,169,105,120,114,P=0,Min=2,105,169
3、,116,120,114,第二次排序,105,169,116,120,114,P=1,Min=1,169,116,120,114,P=1,Min=4,105,114,116,120,169,105,Step1 Exercise,10.4字符串与指针,在C程序中,可以用两种方法访问一个字符串。 (1) 用字符数组存放一个字符串,然后输出该字符串。 (2) 用字符指针指向一个字符串。可以不定义字符数组,而定义一个字符指针。用字符指针指向字符串中的字符。 例10.16 定义字符指针,说明:,在程序中定义了一个字符指针变量string。给定一个字符串常量“I love China!” ,C语言对字符串
4、常量是按字符数组处理的,在内存开辟了一个字符数组用来存放字符串常量。程序在定义字符指针变量string时把字符串首地址赋给string。,说明:,%s示输出一个字符串,给出字符指针变量名string,则系统先输出它所指向的一个字符数据,然后自动使string加1,使之指向下一个字符,然后再输出一个字符如此直到遇到字符串结束标志0为止。 通过字符数组名或字符指针变量可以输出一个字符串。而对一个数值型数组,是不能用数组名输出它的全部元素的。,错! 非字符型数组不能用数组名输出全部值.,例10.17 对字符串中字符的存取,可以用下标方法,也可以用指针方法,例10.18 可以设指针变量,用它的值的改变
5、来指向字符串中的不同的字,说明:,10.4.2字符指针作函数参数,将一个字符串从一个函数传递到另一个函数,可以用地址传递的办法,即用字符数组名作参数或用指向字符串的指针变量作参数。这样在被调用的函数中可以改变字符串的内容。,例10.19 用函数调用实现字符串的复制。,(1) 用字符数组名作参数,(2) 形参用字符指针变量。 10-19B.C,Step2,10.5指向函数的指针,10.5.1用函数指针变量调用函数 可以用指针变量指向整型变量、字符串、数组,也可以指向一个函数。一个函数在编译时被分配给一个入口地址。这个入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函
6、数。 指向函数的指针变量的定义形式为 数据类型 (*指针变量名)(); 注意:“数据类型”是指函数返回值的类型。,例10.22 求a和b中的大者。,定义p是一个指向函数的指针变量,该函数有两个整型参数,函数值为整型。,赋值语句“p=max;”的作用是将函数max的入口地址赋给指针变量p。和数组名代表数组起始地址一样,函数名代表该函数的入口地址。,例10.22 求a和b中的大者。,赋值语句 c=(*p)(a,b); 它包括函数的调用,和“C=max(a,B);”等价。这就是用指针形式实现函数的调用。,说明:,函数的调用可以通过函数名调用,也可以通过函数指针调用 (*p)()表示定义一个指向函数的
7、指针变量,它不是固定指向哪一个函数的,而只是表示定义了这样一个类型的变量,它是专门用来存放函数的入口地址的。 在给函数指针变量赋值时,只需给出函数名而不必给出参数,如:p=max; 用函数指针变量调用函数时,只需将(*p)代替函数名即可(p为指针变量名),在(*p)之后的括弧中根据需要写上实参。 对指向函数的指针变量,像p+n、p+、p-等运算是无意义的。,10.5.2 用指向函数的指针作函数参数,指向函数的指针也可以作为参数,以实现函数地址的传递,也就是将函数名传给形参。 原理: 假设有一个函数,名为Sub,它有两个形参(x1和x2),定义x1和x2为指向函数的指针变量。在调用函数Sub时,
8、实参用两个函数名f1和f2给形参传递函数地址。这样在函数SuB中就可以调用f1和f2函数了。,定义x1、x2为函数指针变量,x1指向的函数有一个整型形参,x2指向的函数有两个整型形参,指向函数的指针作函数参数,在Sub被调用时,把实参函数f1和f2的入口地址传给形参指针变量x1和x2,使x1和x2指向函数f1和f2。在函数Sub中,用*x1和*x2就可以调用函数f1和f2。 (*x1)(i)就相当于f1(i),(*x2)(i,j)就相当于f2(i,j),例10.23,设一个函数process,在调用它的时候,每次实现不同的功能。输入a和B两个数,第一次调用process时找出a和b中大者,第二次找出其中小者,第三次求a与b之和。,10.6返回指针值的函数,一个函数可以带回一个整型值、字符值、实型值等,也可以带回指针型的数据,即地址。 返回指针值的函数定义形式为 类型名 *函数名(参数表); 例如: int*a(int x,int y);,例10.24,有若干个学生的成绩(每个学生有4门课程),要求用户输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳建筑大学《不动产估价》2025-2026学年期末试卷
- 电力金具检修工金具更换考试题目及答案
- 船舶通信导航技术专业知识与实践技能题库及答案
- BTP-414-生命科学试剂-MCE
- 环氧乙烷(乙二醇)装置操作工岗前安全文化考核试卷含答案
- 互联网营销师改进考核试卷含答案
- 计算机零部件装配调试员安全检查能力考核试卷含答案
- 职业指导师安全宣贯竞赛考核试卷含答案
- 丙酮氰醇装置操作工安全技能考核试卷含答案
- 冲压工岗前进度管理考核试卷含答案
- 《诗经·七月》课件
- 胰腺炎护理个案
- PDCA循环提升胰岛素注射规范率
- 潞安职业技术学院单招《语文》考前冲刺试卷(A卷)附答案详解
- 赌博教育课件
- 打包箱拆装转运合同范本
- EPC项目单机试车操作规范与管理制度
- 2025西安医学院第一附属医院第二批招聘(42人)考试模拟试题及答案解析
- 《WPS Office办公应用案例教程》全套教学课件
- CGL商业综合责任险讲解
- 数智化时代民营企业转型升级机理与路径研究
评论
0/150
提交评论