一 概述
二 类型
三 语句
四 函数
五 数据
六 内存
七 代码
附录
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
1.2 函数指针
函数类型由参数列表和返回值共同组成。注意区别函数类型和函数指针类型。
函数名默认为函数指针。
typedef void (func_t)(); // 函数类型 typedef void (*func_ptr_t)(); // 函数指针类型 int main (void) { void a () { puts("a"); } func_t *f = a; // 定义函数指针变量(type *)。 func_ptr_t fp = a; // 直接用指针类型。 f(); fp(); return 0; }
也可以直接以原型方式定义函数指针变量。
int main (void) { void a() { puts("a"); } void (*f)() = a; f(); return 0; }
int main (void) { void *p = NULL; void (*add)(int, int) = (void(*)(int, int))p; // 类型转换。 printf("%p\n", add); return 0; }
不能用函数类型创建对象,不能作为函数返回值,可改用指针。
func_t f = NULL; ^~~~~~ error: function 'f' is initialized like a variable
func_t test() ^~~~ error: 'test' declared as function returning a function {
func_ptr_t test () { void a () { puts("a"); } return a; }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论