当前位置: 首页 > news >正文

C++(4):const关键字

目录

一、基本用法

语法规则:

代码实例:

二、const 声明与普通变量声明的区别

示例对比:

三、const 的错误用法示例

1. 未初始化常量:

2. 尝试修改常量:

四、const 的高级用法

1. const 与指针:

2. const 与函数参数:

五、编程实践与总结


一、基本用法

语法规则
const 数据类型 常量名 = 初始值;
  • 作用:声明一个不可修改的常量,值在初始化后固定。

  • 命名规范:常量名通常使用大写字母(如 MAX_SIZE),以区分变量。

代码实例
#include <iostream>
using namespace std;int main() {const int LENGTH = 10;    // 声明整型常量const float PI = 3.14159; // 声明浮点常量const char SEPARATOR = '-';cout << "面积: " << LENGTH * LENGTH << endl;cout << "分隔符: " << SEPARATOR << endl;return 0;
}

二、const 声明与普通变量声明的区别

特性const 常量普通变量
初始化必须声明时初始化可声明时不初始化(先声明后赋值)
可修改性不可修改可随时修改
内存分配可能被编译器优化为直接替换字面值分配实际内存
用途保护固定值(如配置参数、数学常量)存储可变数据
示例对比
int var = 5;     // 普通变量,可修改
var = 10;        // 合法const int CNST = 5; // 常量,必须初始化
// CNST = 10;       // 非法!编译报错

三、const 的错误用法示例

1. 未初始化常量
const int MAX;  // 错误:常量必须初始化
MAX = 100;       // 错误:不允许后续赋值
2. 尝试修改常量
const int LENGTH = 10;
LENGTH = 20;  // 错误:常量不可修改

四、const 的高级用法

1. const 与指针
int value = 5;
const int* ptr1 = &value;  // 指针指向的值不可变
int* const ptr2 = &value;  // 指针本身不可变(指向固定地址)
const int* const ptr3 = &value;  // 指针和值均不可变
2. const 与函数参数
void printArray(const int arr[], int size){// arr[] 在函数内不可修改,防止误操作for (int i = 0; i < size; i++) {cout << arr[i] << " ";}
}

五、编程实践与总结

  1. 优势

            防止意外修改关键数据;明确标识程序中固定不变的值;编译器可能将 const 常量直接替换为字面值,提升性能。
    1. 适用场景

      数学常量(如 PIGRAVITY)、配置参数(如 MAX_USERSTIMEOUT)、函数参数或返回值中需保护的数据。
  2. 总结代码实例

#include <iostream>
using namespace std;int main() 
{const int MAX_SCORE = 100; // 常量声明int currentScore = 85;     // 变量声明currentScore = 90;  // 合法// MAX_SCORE = 95;  // 非法!常量不可修改cout << "最高分: " << MAX_SCORE << endl;cout << "当前分: " << currentScore << endl;return 0;
}

输出

最高分: 100
当前分: 90

相关文章:

  • 关于甲骨文(oracle cloud)丢失MFA的解决方案
  • Java 24新特性深度解析:从优化技巧到高手进阶指南
  • 【STM32 学习笔记】I2C通信协议
  • 健康养生:开启活力生活的密码
  • 养生:开启健康生活的密钥
  • 优选算法——队列+BFS
  • 动态规划之二维费用的背包问题解析
  • 数据结构·ST表
  • Git 时光机:修改Commit信息
  • json格式不合法情况下,如何尽量保证数据可用性
  • 音频类网站或者资讯总结
  • 40、C# 数组、链表、哈希、队列、栈数据结构的特点、优点和缺点
  • Python生活手册-NumPy统计:从快递站到咖啡店的数字密码
  • 源码示例:使用SpringBoot+Vue+ElementUI+UniAPP技术组合开发一套小微企业ERP系统
  • Flask 调试的时候进入main函数两次
  • Python教程(四)——数据结构
  • 画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf
  • 常见音频主控芯片以及相关厂家总结
  • win10-启动django项目时报错
  • Go语言——goflow工作流使用
  • 韩国前国务总理韩德洙加入国民力量党
  • 总粉丝破亿!当网络大V遇见硬核科技,互联网时代如何书写上海故事?
  • 马上评丨规范隐藏式车门把手,重申安全高于酷炫
  • 47本笔记、2341场讲座,一位普通上海老人的阅读史
  • “仓促、有限”,美英公布贸易协议框架,两国分别获得了什么?
  • 个人住房公积金贷款利率下调,100万元30年期贷款总利息将减少近5万元