c++函数指针

  1. 相关知识

    函数指针指向的是函数,函数的描述方法是由返回值和形参共同决定的。例如:

    bool fun1(const string& s1,const string &s2);
    //这是一个bool(const string& s1,const string &s2)函数

    普通指针:

    int *p;//指向int的指针

    函数指针:

    用(*指针名)替换函数名例如:

    bool (*p1)(const string& s1,const string &s2);

    那么p1是指向bool(const string& s1,const string &s2)函数的指针,括号不能少否则就成了函数返回值的定义,p1成了函数名。

  2. 函数指针的定义,赋值,和使用

    1. 定义

      按照上述说的描述函数的来,例如:

      string& (*p1)(string &, string &);//正常情况
      string& (p1)(string &, string &);//形参中,可省略*,调用方法有所不同
    2. 使用

      1. 普通的函数调用,等价于直接使用函数,不过需要增加*解释符号。

        //先定义一个函数
        string& shorterString1(string& s1, string& s2) {
            const string temp = shorterString(const_cast<const string&>(s1), const_cast<const string&>(s2));
            return const_cast<string&>(temp);
        }
            p1 = shorterString1;//正确 函数名就是地址,类似数组名
            p1 = &shorterString1;//正确,等价上一个
            //*p1 = shorterString1;//错误
            string s1 = "anvd", s2 = "sefse";
            string ans = (*p1)(s1, s2);//实现指针的使用
      2. 作为形参,除了可以和上面相同使用方法外,还有另外一种。

        //正常使用
        string& shorterString2(string& s1, string& s2, const string& (*p1)(const string&, const string&)) {
            const string temp = (*p1)(const_cast<const string&>(s1), const_cast<const string&>(s2));
            return const_cast<string&>(temp);
        }
        //另外的情况
        string& shorterString2(string& s1, string& s2, const string& p1(const string&, const string&)) {
            const string temp = p1(const_cast<const string&>(s1), const_cast<const string&>(s2));
            return const_cast<string&>(temp);
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值