【指针函数】——返回指针的函数
int fun1(int x,int y); //一个返回整型的函数
int* fun2(int x,int y); //一个返回整型指针的函数(指针函数)
【函数指针】——本质是一个变量(指针变量),指向函数的指针变量
声明格式:
类型说明符 (*函数名) (参数)
int (*fun) (int x,int y)
写法:
函数指针是一个变量(一个保存函数地址的变量),有两种赋值写法:
fun = &Function; // &(取地址运算符)不是必须的,因为函数名就是该函数的入口地址
fun = Function;
调用函数指针的方式有两种:
x = (*fun)(); //建议使用这种,容易辨认
取地址运算符 & 不是必需的,因为一个函数标识就表示了该函数的地址
示例代码:
#include <stdio.h>
#include <stdlib.h>
int add(int x,int y) { return x+y; } //函数1
int sub(int x,int y) { return x-y; } //函数2
int (*fun)(int x,int y); //函数指针,变量名为fun
int main(int argc, char *argv[])
{
fun = add; //给fun这个指针(函数指针)赋值
printf(“(*fun)(1, 2) = ”, (*fun)(1, 2)); //(*fun)(1, 2) 相当于调用了add(1, 2)
fun = ⊂ //赋值
printf(“(*fun)(5, 2) = ”, (*fun)(5, 2)); //(*fun)(5, 2) 相当于调用了sub(5, 2)
return 0;
}
注:如有错漏,往大牛指正,谢谢!