读了大佬的blog,清晰了一点...
· 指针函数,返回指针的函数
int *fun(int x,int y);
在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。
· 函数指针,指向函数的指针
int (*fun)(int x,int y);
把一个函数的地址赋值给他
fun = &Function;
fun = Function;
调用
x = (*fun)();
x = fun();
函数指针练习:编写一个函数char_contains(char str[],char c),如果字符串中包含字符c,则返回1,否则返回0,并在main函数中使用函数指针调用。
#include <stdio.h> int char_contains(char str[],char c) { for(int i = 0; i < strlen(str); i++) { if(str[i]=='c') return 1; } return 0; } int main() { char str[] = "abcdef"; int (*p)(char [],char ) ;
p= char_contains; if (p(str,'c'))
{ printf("%s contains char c ",str); }
else
{ printf("%s does not contains char c ",str); } return 0; }
#include <stdio.h> #include <string.h> char * fun(char * p1,char * p2) { int i = 0; i = strcmp(p1,p2); if (0 == i) { return p1; } else { return p2; } } int main() { char * (*pf)(char * p1,char * p2); pf = &fun; (*pf) ("aa","bb"); return 0; }