
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`所指向的整型数的值。
相关推荐











w349292899
- 粉丝: 4
最新资源
- 深入解析bitmap图片处理技术
- 商务英语900句掌握:提升工作效率,商务沟通更自如
- 外贸必备纺织英语中英互译大全
- 一键自动调整屏幕分辨率的智能工具
- 探索NOKIA sj84应用程序的安装与使用
- WinDbg全面命令教程及调试实践指南
- VS2005开发的教师信息管理系统功能详解
- Windows流氓软件清理大师V6.5:注册表优化与清理
- ASP.NET开源项目3:深入学习与实践指南
- IconXP: 网站标题栏图片个性化生成工具
- 深入掌握Spring框架经典教程与实践
- FSCapture绿色版教程:强大截图工具全面解析
- 学生档案管理系统开发指南:JSP与SQL的融合
- SOLARIS命令速查手册:入门至熟练掌握
- 学生课程成绩管理系统:Struts+Hibernate源码可运行
- ATL开发指南第二版源码解析与下载
- 一天学会GTK:控件使用案例分析
- JavaScript动态网页设计:经典实例教程解析
- 轻松掌握U盘启动制作方法
- Office Communicators Server 2007新功能及图文部署指南
- 电机速度数字调速控制程序的下载与应用
- JAVA开发的网络公式编辑器源码发布
- Java与Lua交互实践:搭建环境与程序范例
- Flex实现首页Logo图片切换教程