C++函数指针、指针函数、返回值为函数指针的函数浅谈

C++函数指针、指针函数、返回值为函数指针的函数浅谈C++函数指针、指针函数、返回值为函数指针的函数浅谈引言函数指针、指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。而返回值为函数指针的指针函数就更难理解了,放在文章的最后来介绍。函数指针函数指针是一种特殊的指针,它指向函数的入口。例如int(*add)(int,int);定义了一个函数指针add,用于指向返回值为int,并且有两个int参数的函数…

大家好,又见面了,我是你们的朋友全栈君。

C++函数指针、指针函数、返回值为函数指针的函数浅谈

引言

函数指针、指针函数是C中重要而容易混淆的概念,博主将通过两个实例来说明这两个截然不同的概念。
而返回值为函数指针的指针函数就更难理解了,放在文章的最后来介绍。

函数指针

函数指针是一种特殊的 指针,它指向函数的入口。
例如int (*add)(int, int);定义了一个函数指针add,用于指向返回值为int,并且有两个int参数的函数,下面用实例来说明

/**
 * 作者:lyn
 * 时间:2018.10.30
 * 此程序用来演示函数指针
 */
#include<iostream>
using namespace std;

int addfunc(int a, int b) {
        return a + b;
}
int main() {
        int (*add)(int, int) = addfunc;
        //两种方法都可以
        //int (*add)(int, int) = &addfunc;

        int result = (*add)(1, 2);
        //两种方法都可以,建议使用第一种
        //int result = add(1, 2);
        cout << "通过函数指针调用函数进行计算结果:" << result << endl;
        result = addfunc(1, 2);
        cout << "通过直接调用函数进行计算结果:" << result << endl;
        return 0;
}

在这里插入图片描述

指针函数

指针函数是一种返回值为指针的 函数
例如A *createA();声明了一个返回值为指向A类型的指针的,参数列表为空的函数(这句话读起来可能有一··绕口),实例说明

/**
 * 作者:lyn
 * 时间:2018.10.30
 * 该程序用来演示指针函数
 */
#include<iostream>
using namespace std;
class A {
        public:
                A(int a) {
                        this->a = a;
                }
                int getA(){
                        return a;
                }
        private:
                int a;
};

//返回值为指向类型A的指针的函数
A *createA() {
        return new A(1);
}

int main(){
        //创建一个指向A类型的指针,并调用createA创建一个A类型的对象
        A* b = createA();
        //通过指针调用类的方法
        cout << "b->a = " << b->getA() << endl;
        return 0;
}

在这里插入图片描述

返回值为函数指针的函数

其实在搞懂了函数指针和指针函数后,这个概念并不难懂,其实这就是一个复杂一点的指针函数,因为他的返回值为函数指针。
先给一个例子:

/*
*本例是SGISTL源码中的一个函数,比普通的返回值为函数指针的函数要更复杂一点
*因为本例中函数的参数也是一个函数指针
*/
void (* set_malloc_handler(void (*f)()))()

我们把例子从里往外看
void (*f)()是一个函数指针,它用于指向一个返回值为void,无参数列表的函数
* set_malloc_handler(void (*f)())这是一个指针函数,返回值为指针,它有一个参数,参数为一个函数指针(返回值为void,无参数列表的函数)
void (* set_malloc_handler(void (*f)()))()这是一个指针函数,返回值为函数指针(返回值为void,无参数列表的一个函数),它有一个参数,参数为一个函数指针

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152178.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号