面试题答案
一键面试#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*
),表明返回的指针指向的数据不能被修改,防止调用者对返回的结果进行无意的更改。
这样做的限制在于,函数内部不能修改传入数组的数据,如果需要对数组数据进行修改操作则无法实现。同时,由于返回的是指向静态变量的指针,该函数不是线程安全的,在多线程环境下可能会出现问题。另外,调用者不能通过返回的指针修改结果值,如果后续逻辑需要修改该结果,这种设计就不合适。