认识函数指针(指针函数和函数指针对比)
类型 比较项 | 指针函数 | 函数指针 |
概述 | 指针函数是一个函数,只不过指针函数返回的类型是某一类型的指针。 | 函数指针是指向函数的指针变量。所以函数指针其实是指针变量,只不过该指针变量指向函数。 |
格式 | 类型名 函数名(函数参数列表) 如: int add(int, int); | 类型名 (指针变量名) (函数参数列表) 如: int (p)(int, int); |
用途 | 返回某一类型的指针变量, 解决返回多个值的问题 | a.调用函数 b.做函数的参数 |
使用1 |
|
|
使用2 |
|
|
函数指针的好处:
1)把指针函数当作形参传递给某些具有一定通用功能的模块。并封装成接口来提高代码的灵活性和后期维护的便捷性。设计好了一个函数框架,但是设计初期并不知道自己的函数会被如何使用。比如C的”stdlib “中声明的qsort函数,用来对数值进行排序。显然,顺序还是降序,元素谁大谁小这些问题,库程序员在编写qsort的时候不可能决定。这些问题是要在用户调用这个函数的时候才能够决定。那边qsort如何保证通用性和灵活性呢?采用的办法是让函数的使用者来制定排序规则。于是调用者应该自己设计comparator函数,传给qsort函数。这就在程序设计初期保证了灵活性。尽管使用函数指针使得程序有些难懂,但是这样的牺牲还是值得的。
2)可以具有封装特性,如结构体中可以包含函数指针,不同的结构体可以包含有相同名字的函数指针,这样不会导致冲突。
注意:指向函数的指针变量没有 ++ 和 -- 运算。
还没有评论,来说两句吧...