第8章善于利用指针导论.ppt

  1. 1、本文档共206页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
8.5.1什么是函数指针 如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(入口地址),称为这个函数的指针。 函数名代表函数的入口地址 int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } 8.5.1什么是函数指针 可以定义一个指向函数的指针变量,用来存放某一函数的起始地址,这就意味着此指针变量指向该函数。例如: int (*p)(int,int); 定义p是指向函数的指针变量,它可以指向类型为整型且有两个整型参数的函数。p的类型用int (*)(int,int)表示 8.5.2 用函数指针变量调用函数 例8.22 用函数求整数a和b中的大者。 解题思路:定义一个函数max,实现求两个整数中的大者。在主函数调用max函数,除了可以通过函数名调用外,还可以通过指向函数的指针变量来实现。分别编程并作比较。 (1)通过函数名调用函数 #include stdio.h int main() { int max(int,int); int a,b,c; printf(please enter a and b:); scanf(%d,%d,a,b); c=max(a,b); printf(“%d,%d,max=%d\n,a,b,c); return 0; } int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } (2)通过指针变量访问它所指向的函数 #include stdio.h int main() { int max(int,int); int (*p)(int,int); int a,b,c; p=max; printf(please enter a and b:); scanf(%d,%d,a,b); c=(*p)(a,b); printf(“%d,%d,max=%d\n,a,b,c); return 0; } 函数名代表函数的入口地址 必须先指向函数,若写成 p=max(a,b); 错 只能指向函数返回值为整型且有两个整型参数的函数 int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } 8.5.3 怎样定义和使用指向函数的指针变量 定义指向函数的指针变量的一般形式为 数据类型 (*指针变量名)(函数参数表列); 如 int (*p)(int,int); p=max; 对 p=max(a,b); 错 p+n,p++,p--等运算无意义 例8.23 输入两个整数,然后让用户选择1或2,选1时调用max函数,输出二者中的大数,选2时调用min函数,输出二者中的小数。 解题思路:定义两个函数max和min,分别用来求大数和小数。在主函数中根据用户输入的数字1或2,使指针变量指向max函数或min函数。 #include stdio.h int main() {int max(int,int); int min(int x,int y); int (*p)(int,int); int a,b,c,n; scanf(%d,%d,a,b); scanf(“%d”,n); if (n==1) p=max; else if (n==2) p=min; c=(*p)(a,b); printf(a=%d,b=%d\n,a,b); if (n==1) printf(max=%d\n,c); else printf(min=%d\n,c); return 0; } 只看此行看不出调用哪函数 int max(int x,int y) { int z; if(xy) z=x; else z=y; return(z); }? int min(int x,int y) { int z; if(xy) z=x; else z=y; return(z); } 8.5.4 用指向函数的指针作函数参数 指向函数的指针变量的一个重要用途是把函数的地址作为参数传递到其他函数 指向函数的指针可以作为函数参数,把函数的入口地址传递给

文档评论(0)

过各自的生活 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档