MST

星途 面试题库

面试题:C++常指针在函数参数传递和返回值中的数据保护应用

编写一个函数`processData`,该函数接受一个指向`int`数组的常指针作为参数,对数组元素进行一些计算(例如求和),并返回一个指向计算结果的常指针(假设结果也是一个`int`类型值)。解释在参数传递和返回值中使用常指针如何保护数据,以及这样做可能带来的限制和需要注意的地方。
14.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
#include <iostream>

const int* processData(const int* arr) {
    static int result;
    result = 0;
    while (*arr != 0) {
        result += *arr;
        arr++;
    }
    return &result;
}

在参数传递中使用常指针(const int*)意味着函数内部不能通过该指针修改所指向数组的内容,从而保护数据不被意外修改。在返回值中使用常指针(const int*),表明返回的指针指向的数据不能被修改,防止调用者对返回的结果进行无意的更改。

这样做的限制在于,函数内部不能修改传入数组的数据,如果需要对数组数据进行修改操作则无法实现。同时,由于返回的是指向静态变量的指针,该函数不是线程安全的,在多线程环境下可能会出现问题。另外,调用者不能通过返回的指针修改结果值,如果后续逻辑需要修改该结果,这种设计就不合适。