指针函数:返回指针类型的函数,定义方法以下:函数
类型标识符 *函数名(参数列表)spa
函数指针:指向函数入口地址的指针,定义方法以下:指针
类型标识符 (*指针名称)(形参列表)code
下面咱们经过一段代码加深咱们的理解:blog
//指针函数,和函数指针 #include <stdio.h>//引入 输入输出功能 文件头 //定义一个函数指针 char* (*fun)(char* str,char* str_search); //实现一个字符串查找的功能 void input(char *str,char *str_search) { printf("请输入字符串:"); gets(str);//获取输入字符串 printf("请输入查找字符:"); gets(str_search);//获取输入字符串 } //获取字符串长度 int str_length(char * str) { //字符串结尾符号是 \0 int i = 0; while(str[i] != '\0') i++; return i; } //查找字符串,返回子字符串后面的字符 char* str_search(char *str,char *str_search) { int length1 = str_length(str); int length2 = str_length(str_search); for(int i =0;i<length1-length2+1;i++) { bool flag = true; for(int j = 0;j<length2;j++) { if(str[i+j] != str_search[j]) { j = 0; flag = false; break; } } if(flag) { return str+i;; } } return NULL; } void print(char* str) { if(str!=NULL) { printf("查找成功:%s\n",str); }else { printf("未找到!\n"); } } //主函数 int main() { //定义变量 char str[50],str_sub[50]; char *str_result; printf("直接调用函数:\n"); input(str,str_sub); str_result = str_search(str,str_sub); print(str_result); printf("使用指针函数调用:\n"); input(str,str_sub); fun = str_search; str_result = fun(str,str_sub); print(str_result); return 0; }
其中 char* str_search(char *str,char *str_search) 就是指针函数, char* (*fun)(char* str,char* str_search) 就是函数指针字符串