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