重庆市建设工程安全网站,贴图库wordpress,北京传媒公司排名,推动高质量发展的举措前面说的话
面试的时候#xff0c;经常有面试官问这个问题#xff0c;在Linux内核里面也是经常被使用的#xff0c;在看很多大神的代码里面#xff0c;我们也经常遇到函数指针与指针函数#xff0c;一样#xff0c;如果你自己没问题了#xff0c;就不用往下看了。 定义…前面说的话
面试的时候经常有面试官问这个问题在Linux内核里面也是经常被使用的在看很多大神的代码里面我们也经常遇到函数指针与指针函数一样如果你自己没问题了就不用往下看了。 定义
我们看个代码
int *func(int a,int b)我们之前说过运算符的优先级*的优先级低于
由于“*”的优先级低于“()”的优先级因而func首先和后面的“()”结合也就意味着func是一个函数。即
int *(func)(int a,int b)然后这个函数的返回值的类型是 int * 即指向int类型的指针 然后我们这样修改上面的代码
int (*func)(int a,int b)*func说明func是一个指针然后后面跟着说明这个指针指向一个函数即函数指针。
所以
函数指针首先是一个指针这个指针指向一个函数
指针函数首先是一个函数这个函数的返回值一个指针 用typedef声明一个函数指针
我们声明一个函数指针正常方法是
int (*pfunc)(int a,int b)当我们命名很多个函数指针的时候用上面的方法显得非常不方便,所以我们可以这样做
typedef int (*PF) (int a,intb)
PF pfunc;例程
#include stdio.htypedef int(*PF)(int, int);int add(int a, int b)
{return a b;
}int reduce(int a, int b)
{return a - b;
}int main()
{PF pfunc NULL;pfunc add;printf(add:%d\n,pfunc(3, 4));pfunc reduce;printf(reduce:%d\n, pfunc(3, 4));/*getchar是用VS编写方便查看输出*/getchar();return 0;
}欢迎关注微信公众号-嵌入式Linux
觉得不错请帮忙转发点赞您的每一次支持我都将铭记于心