首页 > 代码库 > 函数指针入门
函数指针入门
函数指针即为指向一个函数的指针。
要定义一个函数指针,只需将需要指向的函数的原型中函数名的前面加一个"*"号即可。
比如,函数foo的原型为:
int foo(int, char, struct node);
那么要建立一个指向foo的指针,名为bar,就可以这样写:
int (*bar)(int, char, struct node);
要令bar指向foo函数,可以这样写:
bar = foo;
也可以这样写:
bar = &foo;
要使用bar来调用foo函数,可以这样写:
(*bar)(1, ‘a‘, NULL);
其中,函数指针名前的"*"号并不是必须的。
所以,也可以这样写:
bar(1, ‘a‘, NULL);
可是,如果每次定义函数指针时都要输入完整函数原型的话,那就太麻烦了。
我们可以用typedef来定义一个函数指针类型,比如这样:
typedef int (*func)(int, char, struct node);
可以看到,这个语句和foo函数的原型大同小异,只不过名字变了下。接下来,我们就可以用它来定义一个函数指针:
func baz;
是不是方便了很多?我们可以用同样的方法来调用它:
(*baz)(233, ‘c‘, NULL); baz(233, ‘d‘, NULL);
我们看两张截图,加深理解:
最后说一句,不要尝试去对函数指针进行加减乘除操作,否则你就等着段错误提示吧。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。