首页 / C语言 / C语言 函数指针的应用
C语言 函数指针的应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C语言 函数指针的应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1993字,纯文字阅读大概需要3分钟。
内容图文
简单的介绍下C语言函数指针的用法。
函数指针的声明:
char (* FunPtr)(char); 或者char (* FunPtr)(char ch); (声明类型个形参类型根据实际情况更改)
例:
1 #include"stdio.h" 2 3char myFun(char ch) 4{ 5 printf("myFun is called, your char is %c.\n",ch); 6return‘w‘; 7} 8 9void main() 10{ 11char temp; 1213char (* funPtr)(char); //定义一个函数指针14 funPtr=myFun; //将myFun的地址给funPtr15 temp=funPtr(‘s‘); //此时可以认为对funPtr的调用就等同于对myFun的调用1617 printf("return value: %c\n",temp); 18 printf("size of myFun: %d\n",sizeof(funPtr)); 19 }
结果:
myFun is called, your char is s.
return value: w
size of myFun: 4
也可以将函数的定义放到结构体中,通过结构体成员变量来调用。
例:
1 #include"stdio.h" 2 3 typedef struct{ 4char (* funPtr)(char); //定义一个函数指针 5}myFunStruct_t; 6 7char myFun(char ch) 8{ 9 printf("myFun is called, your char is %c.\n",ch); 10return‘w‘; 11} 1213void main() 14{ 15char temp; 1617 myFunStruct_t myFunStruct; 18 myFunStruct.funPtr=myFun; //将myFun的地址给funPtr19 temp=myFunStruct.funPtr(‘s‘); //此时可以认为对funPtr的调用就等同于对myFun的调用2021 printf("return value: %c\n",temp); 22 printf("size of myFunStruct_t: %d\n",sizeof(myFunStruct_t)); 23 }
结果:
myFun is called, your char is s.
return value: w
size of myFunStruct_t: 4
或者来点更高级的玩法,
例:
1 #include"stdio.h" 2 3 typedef void (* funInPtr_t)(void); //函数原型定义 4 typedef void (* funOutPtr_t)(void); 5 6 typedef struct{ 7 funInPtr_t funInPtr; 8}myInStruct_t; 910 typedef struct{ 11 funOutPtr_t funOutPtr; 12 myInStruct_t myInStruct; 13}myOutStruct_t; 1415void myInFun(void) 16{ 17 printf("myInFun\n"); 18} 1920void myOutFun(void) 21{ 22 printf("myOutFun\n"); 23} 2425void main() 26{ 27 myOutStruct_t myOutStruct; 28 myOutStruct.funOutPtr=myOutFun; 29 myOutStruct.myInStruct.funInPtr=myInFun; 3031 myOutStruct.funOutPtr(); //外层函数32 myOutStruct.myInStruct.funInPtr(); //内层函数3334 printf("size of myInStruct_t: %d\n",sizeof(myInStruct_t)); 35 printf("size of myOutStruct_t: %d\n",sizeof(myOutStruct_t)); 36 }
结果:
myOutFun
myInFun
size of myInStruct_t: 4
size of myOutStruct_t: 8
是不是像某些语言里的“一点到底”?
C语言的指针就是这么任性!
原文:http://www.cnblogs.com/cntsw/p/4149298.html
内容总结
以上是互联网集市为您收集整理的C语言 函数指针的应用全部内容,希望文章能够帮你解决C语言 函数指针的应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。