C语言函数指针
概念区分
char *fun(char *p1, char *p2)
表示返回值为char
类型指针的函数char *(*fun) (char *p1, char * p2)
fun不是函数名称,而是指针变量————指向函数的指针变量,该函数返回值也是一个指针。
用法
#include<stdio.h>
#include<string .h>
char * fun(char *p1, char *p2) {
int i = 0;
i = strcmp(p1, p2);
if(i == 0 ) {
return p1;
}else {
return p2;
}
}
int main() {
char * (*pf)(char * p1, char * p2);
pf = &fun;
(*pf) ("aa","bb");
return 0;
}
其中pf
是一个函数指针,使用的时候可以将pf
指针指向函数fun
。
这里可以写成是fun 或者 & fun,因为函数被编译之后实际上就是一个地址值,所以本质上没有什么区别。