- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言 第6章 函数38
例5 测试字符串的长度。 /* ex7-11.c */ # include “stdio.h” /* 定义求字符串长度函数 */ userstrlen(char *s) { int n; for(n=0;*s;s++) n++; return(n); /* 返回字符串长度 */ } /* 定义主函数 */ main( ) { char s1[80],s2[80]; gets(s1);gets(s2); printf(“The first string ‘s length is %d\n”,userstrlen(s1)); printf(“The second string ‘s length is %d\n”,userstrlen(s2)); } 3. 当实元是数组元素时,哑元只能是简单变量。哑实结合采用传值。 例6 逐个显示数组元素。 /* ex7-12.c */ /* 定义子函数 */ void display(int x) { printf(“%d “,x);} /* 定义主函数 */ main( ) { int i,a[10]; for(i=0;i10;i++) scanf(“%d”,a[i]); for(i=0;i10;i++) display(a[i]); } 7.4.4 函数的哑实结合(函数指针) 函数指针:函数的入口地址(即函数第一条指令的地址)。 函数指针变量:用来存放函数入口地址的变量。 函数指针变量定义形式: [存储类型] 数据类型 (*函数指针变量名)( ); 例如, int (*f)( ); static float (*fun)( ); 定义了两个函数指针,分别可以指向整型函数和实型函数。 例1 求 a 和 b 中较大者。用函数指针调用函数。 main( ) { int a,b,c,(*p)( ); p=max; /* 函数名是函数的入口地址 */ scanf(“%d,%d”,a,b); c=(*p)(a,b); c=max(a,b); printf(“a=%d,b=%d,max=%d\n”,a,b,c,); } int max(int x,int y) { return(xy?x:y);} 指针变量所 指向的函数 返回值类型 相当于 说明:(1)函数的调用可以用函数名调用,也可以用函数指针调用。 (2)用函数指针调用时,只需用(*p)代替函数名即可(p为函数指针)。 (3)给函数指针变量赋值时,只需给出函数名即可。如, p=max; 或 p=max( ); (4) 函数指针变量进行 + +、- -和加减整数 n等运算没有意义。 例如,设 p是一个函数指针变量,则下列用法是没意义的。 P++, p--, p+n, p-n 函数指针的一个重要应用是作为函数的参数,此时,实元可以是 函数名或函数指针,随着每次调用实元的不同,就可以实现通过函数指 针调用不同函数的目的。关于这方面的应用下面举一个简单的例子。更 深入的应用在以后的进一步学习中慢慢掌握。 例 设计一个函数 process ,在调用它的时候,每次实现不同的 功能。输入 a 和 b 两个数,每次调用分别求 a 和 b的和、差、积、商。 程序转下页: /* ex7-13.c */ main( ) { int a,b; scanf(“%d,%d”,a,b); printf(“a+b=%d\n”,process(a,b,add)); printf(“a-b=%d\n”,process(a,b,sub)); printf(“a*b=%d\n”,process(a,b,mult)); printf(“a/b=%d\n”,process(a,b,div)); } process(int x,int y,int (*fp)( )) { int result; result=(*fp)(x,y); return(result); } /* 求二数之和 */ add(int x,int y) { return(x+y);} /* 求二数之差 */ sub(int x,int y) { return(x-y);} /* 求二数之积 *
您可能关注的文档
- astronomy-the-science-of-the-stars课件819.ppt
- ASS特效_blur指令详解&搭配透明的高级特效(我自己写的,切身体会)31.doc
- As long as you love me 像你爱我那么久 英文歌曲34.ppt
- ASN打印注意事项及操作示意图+35.ppt
- Astronomy-the-science-of-the-stars课件55.ppt
- ATP7-ZL直流柜操作说明书MS11.152.doc
- ATP的主要来源——细胞呼吸(peifeng)39.ppt
- ATP的主要来源细胞呼吸48.ppt
- ATP的主要来源——细胞呼吸用48.ppt
- AutoCAD-2008工程绘图-赵润平老师第2章27.ppt
最近下载
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试参考题库附答案解析.docx VIP
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试备考试题及答案解析.docx VIP
- 2022年宁夏环保集团有限责任公司招聘考试题库及答案解析.docx VIP
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试备考题库及答案解析.docx VIP
- 视频网站付费会员的调查报告.pdf VIP
- 2025江苏苏州张家港市长江保坍实业有限公司招聘1人笔试历年参考题库附带答案详解.docx VIP
- 江门市城乡规划技术标准与准则(2019年最终稿).pdf
- 灭火器使用培训PPT课件.pptx VIP
- 《信息安全技术 人工智能计算平台安全框架-编制说明》.pdf VIP
- 2024年宁夏环保集团有限责任公司人员招聘笔试备考题库及答案解析.docx VIP
文档评论(0)