C 语言-南开大学ch6a.ppt

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 函数不是数据,但它与变量还是有两点相通之处:一个是它有类型(返回类型),另一个是它也有地址,称为人口地址 函数的地址也可作指针的值,这就是函数指针。函数指针的说明格式与函数的原型相似,主要区别是:原来的〈函数名〉,用*〈函数指针名〉所代替, 3 函数指针 -- * 按照如下的说明格式定义出的pf变量,为指向函数的指针变量。 说明格式: 类型名(*pf)(); 例: int (*pf)(); pf为指向函数的指针(即*pf为函数名),该函数无参,且返回值类型为int。 下述示例性程序通过使用指向函数的指针变量来调用自定义函数max及min。 程序执行后的显示结果如下: max?/min? -- input 1/0 :1 For MAX: input 2 integer numbers == a, b :22 -3 max(a,b)==22 * #include iostream.h int max(int x, int y){ //自定义的max函数 return (xy?x:y); } int min(int x, int y){ //自定义的min函数 return (xy?x:y); } void main(){ int (*p)(int,int); //p为指向函数的指针(即*p为函数名),该函数 //有两个int型参数, 且返回值类型也为int int a,b,c; char tmp; coutmax?/min? -- input 1/0 :; //提示用户输入: 1 -- 求max; 0 -- 求min cintmp; * if(tmp==1) { //求max p = max; //类似数组名,函数名也为常量指针 //(表示函数的入口地址),赋给函数指针p coutFor MAX: input 2 integer numbers == a, b :; cinab; c=(*p)(a,b); //*p即max,以实参a、b对max进行调用 coutmax(a,b)==cendl; } else { //求min p = min; //使p指向min函数 coutFor MIN: input 2 integer numbers == a, b :; cinab; c=(*p)(a,b); //*p即min,以实参a、b对min进行调用 coutmin(a,b)==cendl; } } * int f1(float); int f2(char); int f3(float); int f4(float); 设f1,f2,f3,f4 是4 个已说明的函数,这时,下面的说明和赋值,就有合法 与不合法的区别: int(*pf)(float)=f1; //合法 int(*pf1)(char)=f1; // 不合法 pf=f4; //合法 pf=f2; //不合法 pf=f3; //合法 示例 -- * C++语言本身不允许把函数作为参数,有了函数指针,就可以通过函数指针,把函数作为参数使用。 例如:用来计算函数定积分的函数simpson(),对于不同的函数计算其定积分值,应有一个函数参数,在C++程序中用函数指针可以方便地解决这个问题: float simpson(float a,float b,float(*pf)(float)); 参数a,b 给出定积分的上下限,函数指针pf 则指向被积函数(其函数体从略)。在使用时可以对不同的浮点函数和上下限,调用simpson ()计算其定积分 说明 -- * 注意区分:按照如下9种方式所定义 出的具有不同含义的a。 (1) int a; (2) int* a; (3) int** a; ? (4) int a[10]; (5) int* a[10]; (6) int (*a)[10]; ? (7) int a( ); (8) int* a( ); (9) int (*a)( ); * 6.3 指针与内存动态分配 -- 通过使用new与delete单目运算符来实现动态变量的分配与撤消。 ? 1) new 使用格式: new 类型名 //动态变量 new 类型名 ( 初值 )

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档