函数指针

函数指针即指向函数的指针,是调用函数的另外一种方式。函数指针存储的是函数的开始地址,即函数的入口。

声明函数指针

与所有的C变量一样,在使用函数指针之前必须先声明他。它的格式如下

type (*ptr_to_func)(parameter_list);

该声明把ptr_to_func声明为函数指针,该函数的返回值为type,并且该函数接受parameter_list中的参数。更具体的例子如下:

int (*func)(int x);

把*和指针名用圆括号括起来的原因是,间接运算符的优先级比函数参数列表的低。如果不带上圆括号则func便成为一个普通的函数,其返回值类型为指向int类型的指针。

初始化函数指针及其用法

跟其他指针变量一样,声明函数指针后,还必须对其进行初始化,让它指向某个函数。被指向的函数,其返回类型和参数列表必须与函数指针的声明相匹配。

float squate(float x); // 声明squate函数原型
float (*ptr)(float x); // 声明函数指针
float squate(float x)
{
    return x * x;
}

ptr = squate; // 将squate函数的地址赋给ptr函数指针

result = ptr(3); // 函数调用

that's all

results matching ""

    No results matching ""