函数指针和指针函数

本文详细介绍了函数指针和指针函数的概念,包括如何定义和使用函数指针,以及如何调用指向普通函数和类成员函数的指针。同时,还探讨了指针函数的定义和调用方式,特别是如何处理返回值为指针的函数。通过实例展示了如何在C++中操作函数指针和指针函数,以实现灵活的代码设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数指针和指针函数

函数指针

定义:其本质是一个指针变量,就是指向函数的指针。

int (*fun)(int x,int y);

调用函数指针的方式也有两种:

x = (*fun)();
x = fun();
  • 指向普通函数
#include <iostream>
using namespace std;

int add(int a, int b){
    return a + b;
}

int main(void)
{
    int (*fun_p)(int, int);
    fun_p = add;
    cout << fun_p(1, 6) << endl;
    return 0;
}
  • 指向类的成员函数
#include <iostream>

using namespace std;

class A
{
public:
    int var1, var2; 
    int add(){
        return var1 + var2;
    }
};

int main()
{
    A ex;
    ex.var1 = 3;
    ex.var2 = 4;
    int *p = &ex.var1; // 指向对象成员变量的指针,和普通变量一样
    cout << *p << endl;

    int (A::*fun_p)();
    fun_p = A::add; // 指向对象成员函数的指针 fun_p
    cout << (ex.*fun_p)() << endl;
    return 0;
}

特别注意:定义指向成员函数的指针时,要标明指针所属的类。

指针函数

定义:是一个返回指针的函数,其本质是一个函数,而该函数的返回值是一个指针。

int *fun(int x,int y);

注意:在调用指针函数时,需要一个同类型的指针来接收其函数的返回值。不过也可以将其返回值定义为 void*类型,在调用的时候强制转换返回值为自己想要的类型,如下:

void* f(int a,int b){
    Data * data = new Data;
    data->a = a;
    data->b = b;
    return data;
}

//调用:
Data * myData = static_cast<Data*>(f(4,5));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值