最新消息:

C语言 函数指针

编程 3023浏览

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

int (*match)(void *key1, void *key2);

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

match = match_int;

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

retval = match(&x, &y);

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

好了,C语言 函数指针 就分享到这里,非常感谢你的来访。如果你很喜欢本站,请不要忘记收藏本站,以便下次继续访问;也可以 关注站长微博 随时获取最新动态。你的支持就是我最大的动力!

转载请注明:爱维科斯 » C语言 函数指针

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者