函数指针是指向函数的指针变量,即本质是一个指针变量。
1: 函数指针的定义
int (*f) (int x); /*声明一个函数指针.该函数有一个整形输入参数,一个整形输出参数 */
f = func; /* 将func函数的首地址赋给指针f. func函数应该与函数指针f的输出输出参数一致*/
注意:
无返回值函数指针的定义
void (*fptr)(void);
2: 函数指针的赋值
把函数的地址赋值给函数指针,可以采用下面两种形式:
fptr=&Function;
fptr=Function;
取地址运算符&不是必需的,因为单单一个函数标识符就标号表示了它的地址.
3: 函数指针的调用
函数指针调用必须在后面加小括号. 可以采用如下两种方式来通过指针调用函数:
第二种格式看上去和函数调用无异。但是有些程序员倾向于使用第一种格式,因为它明确指出是通过指针而非函数名来调用函数的。
x=(*fptr)();
x=fptr();
4: 下面举一个例子:
typedef unsigned int (*FunctionPointer) (uint8_t address, uint8_t * pValue); //后面就可以用FunctionPointer来定义该种类型的函数指针
FunctionPointer GetValue; //定义一个该类型的函数指针变量
GetValue = &MemoryBank_Dguard_GetValue; //给该函数指针变量赋值
..........
//调用该函数
unsigned int Result;
Result = (*GetValue)();
原文:https://www.cnblogs.com/Jason-Zou/p/14375249.html