1.指针函数
指针变量:是记录变量的内存地址
指针函数:是记录函数的内存地址
2.指针函数内存地址
声明一个方法,方法体没有表达式,直接以16进制数打印方法,可以得到方法的内存地址
void fun() {
}
int main(void) {
printf("%#x\n", fun);
}
//打印:0x4010e0
3.指针函数格式
#include <stdio.h>
//声明一个方法,参数是int类型的a和b,函数做加法运算
int fun(int a, int b) {
return a + b;
}
int main(void) {
//指针函数
//格式:返回值类型 (指针函数名) (记录函数对应的参数列表)=函数名;
int (*f)(int a, int b) = fun;
printf("%d", f(1, 1));
}
4.指针函数作为方法参数
解释:把指针函数作为形参传递
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main(void) {
printf("%d\n", fun(add, 1, 1));
}
int fun(int(*f)(int a, int b), int a, int b) {
return f(a, b);
}
- 一开始声明add(int a,int b)方法,传入2个int类型参数,返回它们的和
- 同时定义了fun(...)方法,里面3个参数,第1个参数是函数指针,后面2个是int类型的参数
- 在main()方法中调用fun(...)方法,返回了a+b的和