注: 这篇文档是使用ChatGpt 工具 cursor.so 书写的,希望通过它来提高我们的工作效率。
但这工具的输出结果有时有问题的,需要我们自己去判断。
1.基本概念
const 是 C++ 中的一个关键字,用于声明一个常量。常量是指在程序运行期间不可修改的值,与变量相反。常量可以用于避免程序中的硬编码(hardcoding),提高代码的可读性和可维护性。
2.用法
基本的用法总结有如下几种:
1. 声明常量变量
功能:该变量的值在程序运行期间不可修改。
案例:
const int MAX_VALUE = 100;
这里声明了一个名为 MAX_VALUE 的常量,其值为 100。由于使用了 const 关键字,
该变量的值在程序运行期间不可修改。
如果执行:MAX_VALUE = 300; //编译器将会报错
需要特别强调:
(1) 只有一个const,如果const位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的内存单元。
如:
int value = 10;
int valueTwo = 11;
const int* ptr = &value; //1.表示指针ptr 指向的内存的值是不可以修改的。
//*ptr = 100; // 2.如果放开,编译会报错。
ptr = &valueTwo;//2.此时指针ptr 是可以指向其他位置的。
cout << *ptr << endl;
(2) 只有一个const,如果const位于*右侧,表示指针本身是常量,不能指向其他内存。
int value = 10;
int valueTwo = 11;
int* const ptr = &value; //1.表示指针ptr 只能指向这个内存位置。
*ptr = 100; // 2.指针指向的位置的值是可以修改的。
//ptr = &valueTwo;//3.如果放开,编译会报错
cout << *ptr << endl;
(3) 两个const,*左右各一个,表示指针和指针所指数据都不可修改。
2.修饰函数参数
功能:函数内部不能修改这些参数的值。
案例:
void printArray(const int arr[], const int size) {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
这里声明了一个名为 printArray 的函数,该函数接受一个 const int 类型的数组和一个 const int 类型的数组大小作为参数。由于使用了 const 关键字,函数内部不能修改这些参数的值。
如果你在该函数内部修改值:size = 6; //将会报错。
3. 函数返回值
功能:用 const 修饰返回的指针或引用,保护指针或引用的内容不被修改
const int* findValue(const int arr[], const int size, const int value) {
for (int i = 0; i < size; i++) {
if (arr[i] == value) {
return &arr[i];
}
}
return nullptr;
}
这里声明了一个名为 findValue 的函数,该函数接受一个 const int 类型的数组、一个 const int 类型的数组大小和一个 const int 类型的值作为参数,并返回一个指向 const int 类型的指针。由于使用了 const 关键字,函数返回的指针指向的值在程序运行期间不可修改。也就是说,该函数的返回值不能为左值。如果你执行类似:(int *)***Object.findValue() = 6 //编译器将会报错
总之,const 关键字可以用于声明常量变量、函数参数和函数返回值,用于指定在程序运行期间不可修改的值。