泡泡中文

最新网址:www.xpaozw.com
字:
关灯护眼
泡泡中文 > 程序媛养成计划 > 第五十二章 指针(七)

第五十二章 指针(七)

「行了行了,老爹你也不用做铺垫了,咱们开门见山直接说吧!大家都这么熟的人了,你这背后的套路早就我们看穿了。」

还不等老爹说完,我便挥手打断了他。

「……」

老爹是一阵语塞,满脸的无奈。

「这个时候,我们就可以使用typede这个喜欢取名字的家伙来定义函数指针类型。注意到,这里是定义的一种数据类型,这意味着我们可以使用这种类型来声明很多的变量,所以刚刚提到的问题也就迎刃而解了。具体的使用方法如下:

typede int(*Func)(int,int);

int max(int a,int b)

{

return a > b ? a : b;

}

int min(int a, int b)

{

return a < b ? a : b;

}

int main(int argc, char const* argv[])

{

Func max = max;

Func min = min;

int maxValue = max(3, 4);

int minValue = min(3, 4);

}

看到没,因为使用了typede,这个时候Func已经不是某个具体的指针变量了,而是摇身一变,升级成为了开山鼻祖。

这样一来,Func就成了一种函数指针类型,可以用来声明变量,所有返回值为int,有两个int参数的函数都可以赋值给它的变量。

到这里,指针和函数之间那些不可告人的关系就被我们全部摸透了。」

「可是老爹,你说了这么多,我也没有明白函数指针有什么用啊,如果我们要调用一个函数,直接用方法名调用不好么,何必这么麻烦?」

我不解道。

「嗯,之前我跟你们说了,其实函数指针最大的用处是作为参数传递给另外一个函数,这种就做回调机制,而作为参数传递的函数指针就被称之为回调函数。

现在我们就用一个贴近生活的小案例来说明回调函数。

假设我们住这个小区是非常高档的小区,甚至都和国际接轨了,里面除了中国人以外还居住了很多外国友人。

物业为了提高服务水品,于是要求保安叔叔们在小区门口和每一个进来小区的业主敬礼问好。

那现在问题就来了,敬礼还好,不管是中国人还是外国人都能够看懂。但是问好因为语言的差异性,会存在问题。如果说的话,大部分外国人听不懂,但是如果说英语的话,大部分中国人也听不懂。

于是啊,有个聪明的保安想出了一种让人拍案叫绝的办法,让进出的人自己选择问好的方式,这样一来,中国人问好用汉语,外国人问好用英语。

呐,上面的场景就可以用回调函数来实现:

typede void (*Func)(void);

void chineseSayHello(void)

{

print(“欢迎回家“);

}

void othersSayHello(void)

{

print(“welee go back home“);

}

void sayHello(Func sayHello)

『加入书签,方便阅读』
热门推荐
好莱坞灯塔白骨天尊开局获得唯一帝器和最强吞噬天赋让你下山娶妻,谁让你当天师的?程序员的游戏人生冒牌女科学家世情录恋综之后,才收到心动信号被误会就变强,我招惹全世界平安夜的钟声
网站地图