指向const对象的指针 和 const指针的区别
来源:互联网 发布:基因编程技术 编辑:程序博客网 时间:2024/05/16 18:29
可以从以下简单概念区别
const 对象的指针:指针所指的对象不能改变。
const 指针:指针本身不能改变。
指向const对象的指针深层次理解:
c++中定义的const对象,如果想要用指针指向它,该指针就必须有const特性即需要用const对象指针。但是也可以用const对象指针去指向非const对象,而此时就不能通过此const对象指针修改此非const对象的值。看一个简单的例子:
const double pi1=3.14;
double pi2=3.1415;
定义一个const对象指针:
const double *pt; //一般用const修饰的变量都是从右向左读(如:pt 是一个指向 double 类型的const 对象的指针)
此时 pt=&pi1;
或者 pt=&pi2;
都是正确的。(即,const对象指针可以指向不同的对象的地址不管是const的还是非const的)
而 对 pt=&pi1; 进行解赋值操作 *pt=3.1415926;或者对 pt=&pi2; 进行解赋值操作 *pt=3.1415926;都是错误的。
(此时 const对象指针是不能够改变对象的值,不管是const对象的值,还是非const对象的值.)
const 指针:
因为const指针是const变量,所以根据c++特性。const指针定义时必须初始化。故其定义与const对象指针不一样。
如:
int num=0;
int *const p=#
必须有初始化的地址,所以其与const对象指针定义不一样。const对象指针可以定义成 const int * p;可以不用初始化。
const 指针所指对象的值能否修改完全取决于对象的类型(若是非const对象类型就可以改变其值,若是const对象类型就无法改变其值)例如上面的 例子就可以通过
*p=1;改变num的值,此时num=1;
若 const int num =0;int *const p=# *p=1;就会出现编译错误。
最后还有一种指针叫 指向const对象的const指针(因为是const变量所以定义是必须初始化)
const double pi=3.1415926;
const double *const pt=π//pt首先是一个 const 指针,指向 double 类型的 const 对象
- 指向const对象的指针 和 const指针的区别
- 指向const对象的指针&&&const指针
- 指向const对象的指针 const指针
- 指向const的指针和const指针的区别
- 如何区分“指向const对象的指针”和“const指针”?
- 如何区分“指向const对象的指针”和“const指针”?
- 指向const对象的指针和const指针
- 如何区分“指向const对象的指针”和“const指针”?
- 如何区分“指向const对象的指针”和“const指针”?
- 指向const对象的指针和const指针
- “指向const对象的指针” 和 “const指针”
- 指向const对象的指针和const指针 (转)
- const指针和指向const对象的指针
- “指向const对象的指针”和“const指针”
- 指向const对象的指针和const指针
- const指针和指向const对象的指针
- 指向const对象的指针 和 const指针
- 指向const对象的指针和const指针
- 第四周项目3 单链表应用(1)
- 伪分布模式搭建hadoop
- css3的简单谈谈
- SDUTACM 顺序表应用3:元素位置互换之移位算法
- HDU 3292 No more tricks, Mr Nanguo [佩尔方程+矩阵]【数论】
- 指向const对象的指针 和 const指针的区别
- 前端黑魔法
- 远程ssh linux云服务器操作
- Linux系Make在Windows下的使用心得
- java面试题二(百度)
- 请问谁有计算机组成原理张基温版第六版的课后习题答案啊!
- Jsp页面中link 和 script 调用页面外的内容加载于浏览器上
- 例题20
- 文章标题