网站大量收购独家精品文档,联系QQ:2885784924
  1. 1、本文档共63页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lh-12 指针

函数指针 (二)使用typedef更直观更方便。 //形式2:typedef 返回类型(*新类型)(参数表) typedef char (*PTRFUN)(int); PTRFUN pFun; char glFun(int a){ return;} void main() { ??? pFun = glFun; ??? (*pFun)(2); } ??????? typedef的功能是定义新的类型。第一句定义了一种名称为PTRFUN的类型,并定义这种类型为指向某种函数的指针,这种函数以一个int为参数并返回char类型数据。此后就可以像使用int,char一样使用PTRFUN了。 函数指针 函数指针有着十分重要的作用—用数据表示控制 float integral (fp,a,b) float (*fp)(float), a, b; { …… //积分的处理 } 指向函数的指针举例 int max(int x, int y) { int z; if(xy) z= x; else z=y; return z; } main() { int max(int, int); int (*p)(int , int ); int a=3,b=9,c; p = max; c = (*p)(a,b); printf(max=%d,c); } main() { int max(int, int); int a=3,b=9,c; c = max(a,b); printf(max=%d,c); } 指向函数的指针说明 指向函数的指针变量的一般形式为: 函数返回值数据类型 (*指针变量名)( 参数列表形式); 函数的调用可以通过函数名调用,也可以通过函数指针调用 (*p)(参数列表形式)表示定义一个指向函数的指针变量,它不是固定指向哪一个函数的,而是专门用来存放函数的入口地址的,在程序中把哪个函数的地址赋给它,它就指向哪一个函数。 指向函数的指针说明 在给函数指针变量赋值时,只需要给出函数名而不必给出参数,如p=max; 用函数指针调用函数时,用(*p)代替函数名即可,后面要写上对应的参数,如(*p)(a,b); 对于函数指针,p++等操作无意义 用指向函数的指针作函数参数 int add(int x, int y) { int z; z = x+y; return z; } int max(int x, int y) {…..} int min(int x, int y) {…..} int process(int x, int y, int (*fun)(int , int)) { int result; retult=(*fun)(x,y); } main() { int max(int , int); int min(int , int); int add(int , int); int process(int , int , int (*fun)(int, int)); int a=3, b=5; printf(max=%d,process(a,b,max)); printf(min=%d,process(a,b,min)); printf(add=%d,process(a,b,add)); } 指针小结 定义 含义 int j; 定义整型变量j int *p; 定义指向整型数据的指针变量 int a[n]; 定义整型数组a,它有n个元素 int *p[n]; 定义指针数组p,它有n个指向整型数据的指针元素组成 int (*p)[n]; P为指向含有n个元素的一维数组的指针变量 int f(); f 为返回整型值的函数 int *p(); p是一个函数,其返回值为指向整型数据的指针 int (*p)(); p是指向函数的指针,该函数返回一个整型值 int **p; p是一个指针变量,它指向一个指向整型数据的指针变量 一级指针变量与一维数组的关系 以 int *p 与 int q[10] 为例 数组名是指针(地址)常量 p = q; p+i 是q[i]的地址 数组元素的表示方法:下标法和指针法,即若p=q, 则 p[i] ? q[i] ? *(p+i) ? *(q+i) 形参数组实质上是指针变量,即int q[ ] ? int *q 在定义指针变量(不是形参)时,不能把int *p 写成int p[]; 系统只给p分配能保存一个指针值的内存区

文档评论(0)

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

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

1亿VIP精品文档

相关文档