MST

星途 面试题库

面试题:C++ 常指针与指向常变量指针在函数参数传递中的应用

假设有一个函数 `void processData(int* data)`,如果需要保证函数内部不能修改传入数据,但又想通过指针传递提高效率,应该如何修改函数参数?如果希望函数参数是一个指向固定内存地址的指针且不能被修改,又该如何做?请分别说明修改思路并给出代码示例。
20.7万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 保证函数内部不能修改传入数据,但通过指针传递提高效率
    • 修改思路:将函数参数修改为指向常量的指针,这样函数内部就不能通过该指针修改所指向的数据。
    • 代码示例
void processData(const int* data) {
    // 这里不能通过data修改数据,例如 data[0] = 10; 会编译错误
}
  1. 函数参数是一个指向固定内存地址的指针且不能被修改
    • 修改思路:将函数参数修改为常量指针,即指针本身是常量,不能再指向其他地址,但可以修改所指向的数据。如果同时要保证不能修改所指向的数据,就需要指向常量的常量指针。
    • 代码示例(常量指针)
void processData(int* const data) {
    // 这里不能修改data的指向,例如 data = &newData; 会编译错误,但可以修改data指向的数据,如 data[0] = 10;
}
  • 代码示例(指向常量的常量指针)
void processData(const int* const data) {
    // 这里既不能修改data的指向,也不能通过data修改所指向的数据
}