首页 > 编程语言 >C++(指针函数、函数指针)

C++(指针函数、函数指针)

时间:2024-07-19 10:56:11浏览次数:15  
标签:函数 指向 int C++ add 函数指针 指针

目录



在C++中,指针函数和函数指针是两个不同的概念,尽管它们的名字非常相似。以下是详细的介绍和区别:



1. 指针函数

指针函数(Pointer to a function)是返回类型为指针的函数。

它的返回值是一个指向某种数据类型的指针。以下是一个示例:

int* getPointer(int value) {
    int* ptr = new int(value);
    return ptr;
}

在这个例子中,getPointer 函数返回一个指向整数的指针。你可以这样使用它:

int* ptr = getPointer(5);
std::cout << *ptr << std::endl;  // 输出 5
delete ptr;  // 记得删除分配的内存


2. 函数指针

函数指针(Pointer to a function)是指向函数的指针。

它可以用来调用一个函数或者将一个函数作为参数传递给另一个函数。定义函数指针时,需要指定它所指向的函数的返回类型和参数类型。以下是一个示例:

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

int (*funcPtr)(int, int);

int main() {
    funcPtr = &add;  // 将函数指针指向 add 函数
    std::cout << funcPtr(2, 3) << std::endl;  // 输出 5
    return 0;
}

在这个例子中,我们定义了一个函数指针 funcPtr,它指向 add 函数,并通过函数指针调用了 add 函数。



3. 区别总结

  1. 定义方式不同

    • 指针函数:返回值是一个指针的函数。例如 int* getPointer(int value)
    • 函数指针:指向函数的指针。例如 int (*funcPtr)(int, int)
  2. 使用方式不同

    • 指针函数:调用时返回一个指针,可以用来指向某个数据类型的实例。
    • 函数指针:可以用来调用所指向的函数,也可以作为参数传递给其他函数。
  3. 功能不同

    • 指针函数:用于返回动态分配的内存或者其他需要返回指针的场景。
    • 函数指针:用于函数回调、动态绑定、实现策略模式等。

通过这两个概念的比较,可以更清楚地理解它们各自的用途和使用场景。



标签:函数,指向,int,C++,add,函数指针,指针
From: https://www.cnblogs.com/keye/p/18311065

相关文章

  • C++预处理器
    C++预处理器预处理器是一些指令,指示编译器在实际编译之前所需完成的预处理。所有的预处理器指令都是以井号(#)开头,只有空格字符可以出现在预处理指令之前。预处理指令不是C++语句,所以它们不会以分号(;)结尾。C++还支持很多预处理指令,比如#include、#define、#if、#else、#line......
  • 开源 C++ 框架 Ocean:用于计算机视觉和增强现实
    Facebook开源了其内部用于计算机视觉(CV)和增强现实(AR) 应用程序的框架Ocean,用于执行各种任务,包括计算机视觉、几何、媒体处理、网络和渲染。Ocean主要使用C++编写,且不依赖于特定平台:Ocean是一个独立于平台的框架,支持所有主要操作系统,包括iOS、Android、Quest......
  • C++ 函数重载注意事项
    C++中的函数重载(FunctionOverloading)是一种允许同一作用域内存在多个同名函数,但是这些函数的参数列表(参数的类型、个数或顺序)必须不同。这使得函数可以根据传入参数的不同而执行不同的任务。然而,在使用函数重载时,需要注意以下几个重要事项:参数列表必须不同:函数的参数个数、......
  • 探讨C++中巧妙的边界条件处理:以花坛种花问题为例【巧妙思想、边界条件】
    在算法题中,处理数组的边界条件是一个常见的挑战。特别是在涉及多条件判断时,如何高效且清晰地处理边界问题,可以显著提升代码的简洁性和可读性。本文将以一道经典的算法题——花坛种花问题,来探讨边界条件的巧妙处理方法。问题描述605.种花问题-力扣(LeetCode)给定一个由......
  • 百度人脸识别Windows C++离线sdk C#接入
    百度人脸识别WindowsC++离线sdkC#接入目录说明设计背景•场景特点:•客户特点:•核心需求:SDK包结构效果代码说明自己根据SDK封装了动态库,然后C#调用。功能接口设计背景•场景特点:--网络:对于无网、局域网等情况,无法连接公网,API方式无法运作。如政府单......
  • C++11 包装器
    前文C++11lambda表达式-CSDN博客C++11新的类功能&&可变参数模板-CSDN博客C++11右值引用和移动语义-CSDN博客function包装器1.概念        目前我们知道的可调用对象有:函数指针(类型定义太复杂),仿函数对象(要定义一个类,用的时候有点麻烦,不适合做类型统一),lam......
  • 初识c++:类和对象(4)
    本文大纲:1.再探构造函数(1)之前我们实现构造函数时,初始化成员变量主要使⽤函数体内赋值,构造函数初始化还有⼀种⽅式,就是初始化列表,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。(初始化列表......
  • C语言指针笔记
    该笔记整理自阮一峰老师的《C语言教程》和部分网上资料什么是指针指针就是一个代表某个内存地址的值声明和初始化指针变量inta=10;//声明一个指针变量p,并将a的地址赋给pint*p=&a;//输出p的值(地址值)printf("%p",p);//输出p所指向的值printf("%d",*p);这......
  • C++基础-引用详解(全网最详细,看这篇就够了)
    目录前言一、引用的概念二、引用的特性三、常引用四、引用的使用场景4.1引用做参数4.2引用做返回值五、传值、传引用效率比较5.1值和引用的作为返回值类型的性能比较5.2值和引用作为参数传递之间的性能差别六、引用和指针的区别结束语前言本节我们正式进入C++......
  • 【C++】内联函数
    目录前言一、内联函数的概念二、内联函数的特征三、总结:四、如何在vs2022查看反汇编以及debug模式下查看inline反汇编需要调整的配置。4.1查看反汇编4.1debug模式下查看inline反汇编需要调整的配置结尾前言各位友友好,我们又见面了!本节我们将进入C++基......