c++ const 的用法

本文介绍了C++中的const关键字,用于声明常量,提高代码的可读性和可维护性。const可以用来声明常量变量、修饰函数参数和函数返回值,确保在程序运行时某些值不可修改。文中详细解释了const与指针结合使用的不同情况,包括指针所指数据为常量、指针本身为常量以及两者皆为常量的场景,并给出了相关示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

注: 这篇文档是使用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 关键字可以用于声明常量变量、函数参数和函数返回值,用于指定在程序运行期间不可修改的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值