c++ const 的用法

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值