C++中const关键字用法详解:const int *a与int * const a的区别

"这篇资源主要讨论了C++中`const`关键字的不同用法,特别是`const int *a`和`int * const a`这两种声明方式的区别,并通过实例进行了阐述。文章还介绍了`const`修饰变量和指针的各种情况,包括基本类型的`const`声明、指针的`const`修饰以及`const`指针的使用规则。"
在C++编程中,`const`关键字用于声明常量或使变量不可修改。以下是对`const`关键字在不同情况下的应用详解:
1. `const char *pCh`:这里的`const`修饰的是`char`,表示`pCh`是一个指向字符串常量的指针。这意味着`pCh`可以改变指向其他字符串常量,但不能改变所指向的字符串内容。
2. `char *const pCh`:`const`修饰的是`pCh`这个指针,表示`pCh`是一个指向字符串的常量指针,即`pCh`一旦初始化后就不能再改变指向,但字符串内容可以修改。
3. `const int a` 和 `int const a`:这两者等价,表示`a`是一个整型常量,其值不能被修改。
4. `const int *a`:`const`修饰的是`int`,意味着`a`是一个指向整型常量的指针,可以改变指针`a`指向其他整型常量,但不能通过`a`修改所指向的整型常量的值。
5. `int *const a`:`const`修饰的是`a`,即`a`是一个指向整型数的常量指针,不能改变`a`的指向,但可以通过`a`修改所指向的整型数的值。
6. `int const *a const`:`const`同时修饰了`int`和`a`,表示`a`是一个指向整型常量的常量指针,既不能改变`a`的指向,也不能通过`a`修改所指向的整型常量的值。
在声明`const`变量时,需要注意:
- `const int r=100;` 是标准的`const`变量声明并初始化,其作用域为当前文件,且必须初始化。
- `extend const int r=100;` 将`const`改为外部链接,使得`r`的作用域扩大到全局,可以不初始化。
- `const int r[] = {...};` 和 `const S s[] = {...};` 都是常量集合,它们在编译时会被分配内存,因此不能在编译期间使用它们的大小作为数组长度等常量表达式。
对于指针的`const`修饰,关键在于理解`const`修饰的是指针还是指针所指向的对象。`const`在前(如`const int *a`)时,修饰的是指针所指向的对象,而在后(如`int * const a`)时,修饰的是指针本身。理解这一点有助于正确使用`const`指针,避免不必要的错误。例如,`const int *a`可以改变`a`的指向,但不能通过`a`改变所指向的整型数的值,而`int * const a`则不能改变`a`的指向,但可以改变`a`所指向的整型数的值。
相关推荐


146 浏览量


191 浏览量

78 浏览量

210 浏览量




w349292899
- 粉丝: 4
最新资源
- C++简单实现classloader及示例分析
- 快速掌握UICollectionView横向分页滑动封装技巧
- Symfony捆绑包CrawlerDetectBundle介绍:便于用户代理检测Bot和爬虫
- 阿里巴巴Android开发规范与建议深度解析
- MyEclipse 6 Java开发中文教程
- 开源Java数学表达式解析器MESP详解
- 非响应式图片展示模板及其源码与使用指南
- PNGoo:高保真PNG图像压缩新选择
- Android配置覆盖技巧及其源码解析
- Windows 7系统HP5200打印机驱动安装指南
- 电力负荷预测模型研究:Elman神经网络的应用
- VTK开发指南:深入技术、游戏与医学应用
- 免费获取5套Bootstrap后台模板下载资源
- Netgen Layouts: 无需编码构建复杂网页的高效方案
- JavaScript层叠柱状图统计实现与测试
- RocksmithToTab:将Rocksmith 2014歌曲高效导出至Guitar Pro