2014年C++课件 第1章 基本C++语言.pptVIP

  1. 1、本文档共144页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档