当前位置: 首页 > news >正文

C++八股 —— 函数指针与指针函数

文章目录

    • 1. 函数指针(Function Pointer)
    • 2. 指针函数(Pointer Function)
    • 3. void* func() 的作用
    • 4. 注意事项

函数指针(function pointer)和指针函数(pointer to function)是两个不同的概念。

1. 函数指针(Function Pointer)

  • 定义:指向函数的指针变量,保存函数的地址。

  • 用途:用于动态调用函数(如回调机制、策略模式)

  • 语法示例return_type (*pointer_name)(parameters)

    如:int (*funcPtr)(int, int)是一个指向返回值类型为int,参数为两个int的函数的指针。

2. 指针函数(Pointer Function)

  • 定义:返回值是指针类型的函数。

  • 用途:返回动态内存、数组或对象地址。

  • 语法示例

    int* createArray(int size) { return new int[size]; 
    }
    int* arr = createArray(10);  // 调用指针函数获取动态数组
    

3. void* func() 的作用

  • 定义:返回 void*(无类型指针)的函数。
  • 关键特性
    1. 通用性:可返回任意类型的指针(如 int*char* 等),但需显式类型转换后才能使用。
    2. 典型用途
      • 实现泛型编程(如C标准库的 malloc)。
      • 隐藏具体类型细节(如操作系统API返回句柄)。
  • 示例

    void* allocateMemory(size_t size) {return malloc(size);  // 返回void*类型的内存地址
    }
    int* buffer = (int*)allocateMemory(100 * sizeof(int));  // 显式转换类型
    

4. 注意事项

  1. 函数指针的兼容性
    • 需严格匹配函数签名(参数类型、返回类型)。
    • C++中建议优先使用 std::functionlambda 替代原生函数指针。
  2. 指针函数的内存管理
    • 返回动态内存时,需明确所有权(调用者负责释放)。
  3. void*的安全风险
    • 必须手动类型转换,避免未定义行为。
    • C++中推荐使用 模板继承 实现类型安全替代。

参考:

  1. DeepSeek
  2. 函数指针和指针函数的区别-CSDN博客

相关文章:

  • MySQL连接池不够分配,导致程序获取不到链接
  • Vue3项目中如何实现网页加载进度条。
  • 使用FastAPI微服务在AWS EKS中构建上下文增强型AI问答系统
  • Milvus(18):IVF_PQ、HNSW
  • 大疆无人机搭载树莓派进行目标旋转检测
  • [AI Tools] Dify 工具插件上传指南:如何将插件发布到官方市场
  • 【文件系统—散列结构文件】
  • 基环树(模板) 2876. 有向图访问计数
  • openssl中BIO的使用
  • 在欧拉系统(openEuler)上安装 MySQL 8
  • OpenCV播放摄像头视频
  • 2025年城市规划与互联网技术国际会议(ICUPIT 2025)
  • 生产安全管理系统标杆
  • 【高级IO】多路转接之单线程Reactor
  • Spring Cloud 以Gateway实现限流(自定义返回内容)
  • DVWA靶场保姆级通关教程--06不安全验证机制
  • 安全核查基线-1.LPD服务
  • 构筑芯片行业的“安全硅甲”
  • 教育+AI:个性化学习能否颠覆传统课堂?
  • 游戏引擎学习第266天:添加顶部时钟概览视图。
  • 解放军仪仗分队参加白俄罗斯纪念苏联伟大卫国战争胜利80周年阅兵活动
  • 4月证券私募产品备案量创23个月新高,股票策略占比超六成
  • 总粉丝破亿!当网络大V遇见硬核科技,互联网时代如何书写上海故事?
  • 央行:下阶段将实施好适度宽松的货币政策
  • 重庆动物园大熊猫被游客扔玻璃瓶,相同地方曾被扔可乐瓶
  • 五一期间7名游客接连被困青海荒漠,警方提醒严禁非法穿越