2 回答
TA贡献1844条经验 获得超8个赞
每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。
函数指针的声明方法为:
函数类型 (标志符指针变量名) (形参列表);
注1:“函数类型”说明函数的返回类型,“(标志符指针变量名 )”中的括号不能省,若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
函数类型要对应,参数列表也要对应。
int(*ptr)();就是指向一个返回值为int,参数为空的函数的!
TA贡献1752条经验 获得超4个赞
定义一个函数指针 int(*ptr)() , 所有 int function(void) 类型的函数都可以被这个函数指针引用,也就是无参数,返回int的函数都可以写。 只要你写 ptr=function 之后 ptr()和function()是同样的结果。如果有多个函数 f1() f2() f3()
你写 ptr=f1; ptr(); 调用的是f1()。 写ptr=f3(),调用的是f3(),函数指针的用处更多的是用于函数回调,把自己的指针给另一个对象,他会在满足条件时调用该函数,这种应用非常多,我们的所有程序的界面控制,比如键盘鼠标控制本质上都是函数回调,比如键盘控制某函数调用,就向键盘消息处理程序发送函数指针,等待按键时改程序会调用该函数,实现键盘控制。
- 2 回答
- 0 关注
- 138 浏览
添加回答
举报