如何用函数指针调用函数

先举一个用函数指针调用函数的例子
int Func(int x);   /*声明一个函数*/
int (*p) (int x);  /*定义一个函数指针*/
p = Func;          /*将Func函数的首地址赋给指针变量p*/

int Func(int x);

这一句是声明一个函数,是我们要被函数指针调用的函数,而且函数名表示函数的首地址。

int (*p) (int x);

这里定义了一个函数指针,int (*p) (int x); 里的int指的是函数的返回值,指要被调用的函数的返回值是整形。

int (p) (int x); 里的P指的是指向函数首地址的指针变量。

int (*p) (int x); int x表示被调用的函数参数是一个且是整形。

p = Func;

这一句是把被调函数的首地址存在定义的指针变量里,用来指向被调函数。

定义的函数指针和声明的函数一一对应,对照着看会很清晰。

# include <stdio.h>
int Max(int, int);  //函数声明
int main(void)
{
    int(*p)(int, int);  //定义一个函数指针
    int a, b, c;
    p = Max;  //把函数Max赋给指针变量p, 使p指向Max函数
    printf("please enter a and b:");
    scanf("%d%d", &a, &b);
    c = (*p)(a, b);  //通过函数指针调用Max函数
    printf("a = %d\nb = %d\nmax = %d\n", a, b, c);
    return 0;
}
int Max(int x, int y)  //定义Max函数
{
    int z;
    if (x > y)
    {
        z = x;
    }
    else
    {
        z = y;
    }
    return z;
}

输出结果是:
please enter a and b:5 6
a = 5
b = 6
max = 6

### C/C++ 中使用函数指针调用函数 #### 声明和定义函数指针类型 在C++中可以利用`using`关键字简化函数指针类型的声明。例如,对于接受两个整数参数并返回一个整数值的函数,可以通过如下方式创建其对应的函数指针类型: ```cpp using AddFunc = int (*)(int, int); ``` 此语句表示名为`AddFunc`的新类型是一个指向接收两个`int`型参数且返回`int`值的函数的指针[^1]。 #### 初始化函数指针 一旦有了上述自定义类型之后,则可方便地声明该类别的变量,并将其赋给具体的函数地址。假设存在这样一个实现加法运算的常规函数`add(int a,int b)`: ```cpp // 定义一个简单的加法函数 int add(int a, int b){ return a + b; } // 创建函数指针实例并将它绑定至具体函数上 AddFunc addPtr = add; ``` 这里`addPtr`就是一个能代表任何具有相同签名(即相同的输入输出格式)的其他函数的对象;目前被设置成指向`add()`这个特定实体。 #### 调用目标函数 当准备完毕后就可以像平常那样直接通过名称来间接执行所关联的目标过程了——只需把原先应该放置实际函数名的地方换成相应的指针即可完成同样的效果: ```cpp #include <iostream> int main(){ // 使用函数指针调用函数 std::cout << "Result of calling function via pointer: " << addPtr(3, 7) << '\n'; } ``` 这段程序会打印出两数相加之结果为10的信息字符串。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值