1 .函数指针的定义
函数类型(*指针变量名称) )形参数列表);
函数类型说明函数的返回类型。 「()”的优先级高于“*”,因此指针变量名称之外的括号是必不可少的。 后面的“参数列表”表示指针变量指向的函数的参数列表。
例如:
int(f ) ) int x );
双精度(* ptr ) )双精度x;
定义函数指针时请小心。
函数指针及其所指函数的自变量的数量和类型应该为-;
函数指针的类型和函数的返回类型也必须匹配。
2 .函数指针赋值
函数名称和数组名称一样表示函数代码的起始地址,所以分配值时只要直接将函数指针指向函数名称即可。
例如,
intfunc(intx );
int(f ) ) int x );
f=func;
赋值时的函数func没有括号也没有参数。 func表示函数的起始地址,因此赋值后,指针f指向函数func(x )的代码的起始地址。
3 .用函数指针调用函数
函数指针由函数名称和相关参数调用。
与其他指针变量同样,在指针变量pi是指向某个整数变量I指针的情况下,p等于其所指的变量I; 如果pf是指向某浮点变量f的指针,则pf等效于其指向的变量f。 同样,如果f是函数func (指向x的指针,则f表示函数func。 所以f=func; 然后,(f )和func表示相同的函数。
函数指针指向存储区中的函数,因此可以从函数指针调用相应的函数。 本节介绍如何使用函数指针调用函数。 必须采取以下三个步骤:
首先,说明函数指针变量。
例如: int(f ) ) int x );
然后,给函数指针变量赋值。
例如,f=func; (func(x ) x )必须先定义() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
最后,(指针变量) )参数表); 调用函数。
例如((f ) ) x ); (x必须先赋值)