算法精解十二(C语言版)

 函数指针

        函数指针是指向可执行代码段或调用可执行代码段的信息块的指针,而不是指向某种数据的指针。函数指针将函数当做普通数据那样存储和管理。函数指针有一种固定的形式,就是包含一个确定的返回值类型和若干个函数参数。声明一个函数指针看起来与声明一个函数非常类似,只是在函数名之前有一个表示指针的星号(*),并且函数名和星号会用圆括号括起来。例如,在下面一段代码中,match被声明为一个函数指针,他接受两个void指针类型的参数,同时返回一个整型。

以上函数声明的意思是,我们指定了一个函数指针,它接受两个void指针,返回一个整数,命名为match.例如:假设有一个match_int函数。它的两个void指针参数指向整型并返1.考虑到之前的函数声明math,可以这样赋值:

要执行一个由函数指针所引用的函数,只需要在正常调用普通函数的地方调用函数指针。例如:想要调用之前提到的函数指针match,执行下面的语句,假设x、y和retval都已经声明为整型:

在本书中,函数指针的一个重要用途是将函数封装到数据结构中。例如:在实现链式哈希表时(见第8章),这个哈希表数据结构就包含一个成员,类似以上所提到的名为match的函数指针。此指针的作用是,当任何时候我们需要判断正在查找的元素是否匹配表中的元素时,都可以调用一个函数来完成。当哈希表初始化时,把某个函数赋给这个指针。赋给指针的这个函数与match有相同的原型,不同之处是,在内部惊醒两个元素的比较时,函数会根据哈希表中的数据类型进行具体类型的数据比较。使用指针把函数另存为数据结构的一部分是C语言一种非常好的特性,因为它可以使用数据结构或函数变得更具有通用性。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值