函数指针 首先是一个 指针 。该指针指向函数。(指向函数的指针)
参考:https://blog.csdn.net/u012177034/article/details/52319219
- 定义:
int (*f)(int x,int y);//最容易理解
int (*f)(int,int);//只说明函数的输入数据类型
int (*f)();//可忽略形参,因为只是声明一个函数指针
typedef int (*func_ptr)();
func_ptr f;//先定义一个函数指针类型,再用此类型来定义
2. 初始化:
f = max;//函数名本来就是函数的首地址
f = &max;//取函数的地址
3. 根据上面的内容,我来举一个实际栗子:
自己写了个链表,下面是对链表中的元素进行查找,这里用到了int(*compare)(...)函数指针
int locateelem_sq(sqlist L,elemtype e,int (*compare)(elemtype,elemtype))
{
int i=1;
elemtype *p;
p=L.elem;
while(i<=L.length && !(*compare)(*p++,e)) ++i;
if(i<=L.length) return i;
else return 0;
}
这里是compare函数,简单比较是否是同一个数。
int compare(elemtype a,elemtype b)
{
if(a==b)
return 1;
else
return 0;
}
在主函数中进行函数调用:
int main()
{ sqlist La;
int weixu;
weixu=locateelem_sq(La,4,compare);
return 0;
}