- 1、本文档共144页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.7.7 指针和函数 [例Ex_PointerRreturn] 返回指针的函数:用来将一个字符串逆序输出 #include iostream.h char* flip(char *str) { char *p1, *p2, ch; p1 = p2 = str; while (*p2 != \0) p2++; p2-- ; while (p1p2) { ch = *p2; *p2 = *p1; *p1 = ch; // 交换字符 p1++; p2--; } return str; } void main() { char str[] = ABCDEFGH; coutflip(str)\n; } 运行结果为: * 1.7.7 指针和函数 3. 指向函数的指针 同变量相似,每一个函数都有地址。指向函数地址的指针称为“函数指针”。函数 指针指向内存空间中的某个函数,通过函数指针可以调用相应的函数。 函数指针的定义如下: 函数类型( * 指针名)( 参数表 ); 例如: int (*func)(char a, char b); 就是定义的一个函数指针。int为函数的返回类型,*表示后面的func是一个指针 变量名。该函数具有两个字符型参数a和b。 需要说明的是,由于()的优先级大于*,所以下面是返回指针的函数定义而不是函 数指针定义: int *func(char a, char b); 一旦定义了函数指针变量,就可以给它赋值。由于函数名表示该函数的入口地 址,因此可以将函数名赋给指向函数的指针变量。但一般来说,赋给函数指针变 量的函数的返回值类型与参数个数、顺序要和函数指针变量相同。 * 1.7.7 指针和函数 例如 int fn1(char a, char b); int *fn2(char a, char b); int fn3(int n); int (*fp1)(char x, char y); int (*fp2)(int x); fp1 = fn1?; // 正确,fn1函数与指针fp1指向的函数一致 fp1 = fn2?; // 错误,fn2函数的返回值类型与指针fp1指向的函数不一致 fp2 = fn3?; // 正确,fn3函数与指针fp2指向的函数一致 fp2 = fp1?; // 错误,两个指针指向的函数不一致 fp2 = fn3(5)?; // 错误,函数赋给函数指针时,不能加括号 函数指针变量赋值后,就可以使用指针来调用函数了。调用函数的格式如下: ( * 指针名)( 实数表 ); 或 指针名( 实数表 ); 例如: (*fp2)(5); 或 fp2(5)?; * 1.7.7 指针和函数 [例Ex_FuncPointer1] 函数指针的使用 #include iostream.h double add(double x, double y) { return (x+y); } double mul(double x, double y) { return (x*y); } void main() { double (*func)(double,double); // 定义一个函数指针变量 double a, b; char op; cout输入两个实数及操作方式,+表示加, *表示乘: ; cinabop; if (op == +) func = add; // 将函数名赋给指针 else func = mul; coutaopb=func(a,b)endl; // 函数调用 } 结果如下: * 1.7.7 指针和函数 函数指针变量可用作函数的参数。例如: [例Ex_FuncPointer2] 函数指针变量可用作函数的参数 #include iostream.h double add(double x, double y) { return (x+y); } double mul(double x, double y) { return (x*y); } void op(double(*func)(double,double), double x, double y) { coutx = x, y = y, result = func(x,y)\n; } void main() { cout使用加法函数: ; op(add, 3, 7); cout使用乘法函数: ; op(mul, 3, 7); } 运行结果为: * 1.7.7 指针和函数 [例Ex_FuncPointer2] 函数指针变量可用作函数的参数 代码中,op函数的第一个参数为函数指针,该指针指向的函数有两个double参数 并返回d
您可能关注的文档
- 2014年android入门教程.ppt
- 2014年Android软件开发_说课.ppt
- 2014年Android软件下载及安装.ppt
- 2014年android实现按键声音.ppt
- 2014年Android手机操作培训.ppt
- 2014年Android手机测试方法交流.ppt
- 2014年Android手机测试方法交流8141884.ppt
- 2014年android图片处理.ppt
- 2014年android-网络编程.ppt
- 2014年android文件管理器.ppt
- 三维设计软件应用项目-课程标准-.pdf
- 工业产品三维设计-课件 项目6-龙舟船桨建模.pptx
- 《护理职业风险及防范(第2版)》课件 第十一章 临床各科室职业危害与防护.pptx
- 《护理职业风险及防范(第2版)》课件 第二章 护理职业风险与医疗卫生法律法规.pptx
- 《护理职业风险及防范(第2版)》课件 第五章 护理突发事件的处理.pptx
- 《护理职业风险及防范(第2版)》课件 第八章 物理性职业危害与防护-祁红.pptx
- HCIA路由交换实战-理论课后习题答案.docx
- 《地陪导游实务》课件项目7 送站服务.pptx
- 《供应链物流与供应链基础》课件全套 单元1--10 智慧物流的认知 --- 智慧物流供应链平台的维护.pptx
- 《服务机器人综合应用》 课件 3.2证件文字识别功能开发实现.pptx
最近下载
- QBT5510-2021 家用电冰箱保鲜性能试验方法.pdf VIP
- 纸箱生产技术培训.docx VIP
- 金属成型软件:PAM-STAMP二次开发_(14).用户界面与图形编程.docx VIP
- TJ9-74 工业与民用建筑结构荷载规范.pdf VIP
- ±800kV及以下直流架空输电线路工程施工及验收规程.pdf VIP
- 2025年勘察设计注册土木工程师水利水电工程资格考试基础考试大纲.pdf VIP
- 纸箱生产工艺流程.ppt VIP
- 2025汽车驾驶员高级技师基本理论知识考试题(+答案解析).docx VIP
- 固化剂化学品安全技术说明书.docx VIP
- 浙江省居住建筑节能设计标准.pdf VIP
文档评论(0)