C++中的const
一,C++中const的基本知识
1.C++中const的基本概念
1.const是定义常量的关键字,表示只读,不可以修改。
2.const在定义常量的时候必须要初始化,否则报错,因为常量无法修改,只能在定义的时候才可以进行初始化。
2.C++中const的基本用法
# include<iostream> int main()
{
// 表示一个整数常量
const int a = ; // 表示一个整数常量
int const b = ; // 必须在定义定义常量的时候立即进行初始化
// int const c; 该语句报错,因为未进行初始化 // 表示该指针指向的是一个常量,该指针是一个变量。不可以通过指针间接修改常量的值
const int * c;
c = &a;
// *c = 100; 该语句错误,在C++中不允许通过指针间接修改常量的值(在C中是可以的) // 表示一个常指针,该指针是一个常量,必须要立即初始化,该指针的值一旦初始化就不允许再修改
int d = ;
int f = ;
int * const e = &d;
// e = &f; 该语句错误,因为常指针不允许修改 // 表示一个指向常量的常指针,该常指针的值不允许修改,该常指针指向的内存空间的值也不允许修改
const int * const g = &d;
// g = &f; 该语句错误,常指针不允许被修改
// *g = 20; 该语句错误,因为该指针指向的是一个常量,无法间接修改该值 return ;
}
3.const的易混点的区分以及作函数参数的好处
1.const的易混点
1.常指针:该指针变量是常量,因此叫做常指针,例如:int * const tmp = &a;
2.指向常量的指针:该指针是变量,但是指向的内存空间是常量的内存空间,不允许通过间接赋值的方式改变该内存空间的值。例如:const int * tmp = &b;
3.指向常量的常指针:该指针是常量,该指针指向的内存空间也是常量,即不允许修改指针的值,也不允许间接修改指针指向内存空间的值,例如:const int * const tmp = &b;
2.const作函数参数的好处
1.清楚的区分参数是输入还是输出。
2.保护原始数据不被函数内部修改,例如:void setName(const char * name);
二,C++的const的原理
1.C语言中的冒牌货-const
1.C语言中的const是可以通过指针间接赋值的方式改变常量的值,因此C语言中的const是允许被修改,不是真正意义上的常量。因此是冒牌货。
2.C++编译器对const的处理
1.C++的编译器碰见常量声明的时候,会在符号表中把该常量放进去。
2.编译过程中若发现使用常量,则直接以符号表中的值进行替换。
3.编译过程中若发现对常量进行了&地址操作,则为该常量分配内存空间(兼容C)。
4.C++编译器虽然可能为常量分配内存空间,但不会使用其存储空间中的值。
三,const和#define的区别
1.两者的区别
1.C++中的const类似于宏定义。
2.C++中的const是由编译器进行处理的,提供类型检查和作用域检查。宏定义是由预处理器处理,单纯的文本替换而已。
C++中的const的更多相关文章
- C++中的const关键字
http://blog.csdn.net/eric_jo/article/details/4138548 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方 ...
- C++中关于const的思考
在学习C++的过程中,经常被什么时候使用const.为什么使用const以及怎么使用const关键字这样的问题所困扰,以下是我对const的使用总结. 1.值替代 使用#define的确单缺点,第一: ...
- C与C++中的const
同样,有下面一段代码: #include <iostream> using namespace std; int main() { ; int *j = (int *) &i; * ...
- C++中加const与不加const的区别
“常量”与“只读变量”的区别. 常量肯定是只读的,例如5, "abc",等,肯定是只读的,因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它. “只读变量”则是在内存中 ...
- C++笔记019:C++中的const修饰的是一个真正的常量
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 程序一: 我们知道数组的下标不能为变量,必须是一个确定的值.在C语言中看程序: #define a 10 int main() { //第 ...
- C++中的const总结
CONST 一.符号常量 声明: const 类型说明符 常量名 = 常量值: const float PI = 3.1415927; //可以交换const与float的位置 符号常量在声明时一定要 ...
- C和C++ 中的const
C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码: #include <iost ...
- c++中的const和volatile知识自我总结
学习了下c++中的const关键字,总结如下. 1.const限制一个变量不能修改其内容,如果强行修改的话,如下面代码这样子,编译就会报错,“表达式必须是可修改的左值”. int main() { c ...
- C++中的const的用法
const对象.指向const对象的指针.const指针(通过一个面试题来了解) 1.const对象 (1)关于const,很多企业的笔试.面试都会出现,很简单,就问你“const的含义?”. 我 ...
随机推荐
- app开发外包注意事项,2017最新资讯
我们见过很多创业者,栽在这app外包上.很多创业者对于app外包这件事情不是特别重视,以为将事情交给app外包公司就完事了,实际上不是的.无论是从选择app外包公司还是签订合同.售后维护等各方面都有许 ...
- 探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- C#为IE编写BHO插件心得
啥是BHO,其实大家都用过,没听过只是没在意而已,来张图你就知道是什么了 是不是很熟悉,就是这么个玩意~~ 先说说我要用来干嘛~我们有个库,里面数据很全面,但是某个部门需要在第三方的B/S系统录入某些 ...
- git克隆项目到本地&&全局安装依赖项目&&安装依赖包&&启动服务
一.安装本地开发环境 1.安装本项目 在需要保存到本地的项目的文件夹,进入到文件夹里点击右键,bash here,出现下图: 2.安装依赖项目 3.安装依赖包(进入到命令行) # 安装依赖包 $ ...
- .NET平台和C#编程的总结
第一章 简单认识.NET框架 (1)首先我们得知道 .NET框架具有两个主要组件:公共语言进行时CLR(Common Language Runtime)和框架类库FCL(Framework ...
- JQuery中的siblings()是什么意思
jQuery siblings() 方法返回被选元素的所有同胞元素,并且可以使用可选参数来过滤对同胞元素的搜索. 实例演示:点击某个li标签后将其设置为红色,而其所有同胞元素去除红色样式. 1.创建H ...
- hibernate的基本xml文件配置
需要导入基本的包hibernate下的bin下的required和同bin下optional里的c3p0包下的所有jar文件,当然要导入mysql的驱动包了.下面需要注意的是hibernate的版本就 ...
- CSS中强悍的相对单位之em(em-and-elastic-layouts)学习小记
使用相对单位em注意点 1.浏览器默认字体是16px,即1em = 16px,根元素设置如下 html{ font-size: 100%; /* WinIE text resize correctio ...
- Linux基础介绍【第四篇】
Linux文件和目录的属性及权限 命令: [root@oldboy ~]# ls -lhi total 40K 24973 -rw-------. 1 root root 1.1K Dec 10 16 ...