MST

星途 面试题库

面试题:C++中const指针在函数参数和返回值中的应用

编写一个C++函数,该函数接受一个`const int *`类型的指针作为参数,并返回一个`int * const`类型的指针。在函数内部,对传入的指针所指向的值进行一定的计算(例如加1),并将结果通过返回的指针返回。同时,分析这样设计函数参数和返回值类型的优缺点。
21.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

int* const modifyAndReturn(const int* input) {
    static int result;
    result = *input + 1;
    return &result;
}

优点

  1. 参数为const int *
    • 保证了传入的指针所指向的数据不会被函数内部意外修改,提高了代码的安全性。对于一些只需要读取数据进行操作的函数,这种限定很有必要,避免了误操作带来的错误。
    • 使得函数可以接受const int类型的指针作为参数,增加了函数的通用性,无论是指向常量还是非常量的int指针都能传入。
  2. 返回值为int * const
    • 确保返回的指针本身不会被修改,即始终指向同一个内存地址。这对于一些需要保证返回指针稳定性的场景很有用,比如在一些数据结构中,返回的指针用于后续固定位置的访问。

缺点

  1. 参数为const int *
    • 如果函数内部需要修改传入指针所指向的值,就需要对指针进行类型转换,这可能会破坏const的安全性,并且如果转换不当,容易引发未定义行为。
  2. 返回值为int * const
    • 使用static变量存储计算结果,在多线程环境下可能会出现数据竞争问题,因为多个线程同时调用该函数可能会同时修改和访问这个静态变量。
    • 返回的指针指向的是一个静态局部变量,函数调用结束后该变量依然存在,直到程序结束才释放,这可能会造成内存管理上的混淆,尤其是在需要严格控制内存生命周期的场景下。