码迷,mamicode.com
首页 > 其他好文 > 详细

函数指针入门

时间:2014-06-02 06:15:10      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:c   style   class   blog   code   a   

函数指针即为指向一个函数的指针。
要定义一个函数指针,只需将需要指向的函数的原型中函数名的前面加一个"*"号即可。
比如,函数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);

我们看两张截图,加深理解:
bubuko.com,布布扣
bubuko.com,布布扣
最后说一句,不要尝试去对函数指针进行加减乘除操作,否则你就等着段错误提示吧。

函数指针入门,布布扣,bubuko.com

函数指针入门

标签:c   style   class   blog   code   a   

原文地址:http://www.cnblogs.com/KM-Y/p/tutoralwithfuncpoint.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!