1. const 作为函数的返回值
格式:cons int* func()
-
防止通过函数返回值修改指针所指向的数据:当需要返回一个指针,但不希望调用函数的代码修改指针指向的数据时,可以使用常量整型指针。这可以避免意外的数据修改。
-
保护函数内部数据:当函数内部有一个指针指向一块内部数据,并且不希望外部代码通过该指针修改这些数据时,可以使用常量整型指针。这有助于保护函数内部数据的完整性。
-
向调用者提供只读数据:当函数有一块只读数据,需要将其提供给调用者使用,但不希望调用者修改该数据时,可以使用常量整型指针。这可以确保调用者只能读取而不能修改数据。
// case 1 防止通过函数返回值修改指针所指向的数据
const int* func2(int* arr, int size) {
// do some operations on 'arr'
return arr; // 返回一个常量整型指针,防止修改指针所指向的数据
}
int main() {
int arr[5] = {1, 2, 3, 4, 5};
const int* ptr = func2(arr, 5);
// 尝试修改通过指针访问的数据,会编译错误
*ptr = 10;
return 0;
}
// case 2 保护函数内部数据
const int* func2() {
int localVar = 10;
const int* ptr = &localVar; // 返回一个常量整型指针来保护函数内部数据
return ptr;
}
int main() {
const int* ptr = func2();
// 尝试修改函数内部数据,会编译错误
*ptr = 20;
return 0;
}
// case 3 向调用者提供只读数据
const int* func2() {
static const int data[] = {1, 2, 3, 4, 5}; // 一个只读的静态数组
return data;
}
int main() {
const int* ptr = func2();
// 尝试修改函数返回的只读数据,会编译错误
ptr[0] = 10;
return 0;
}