首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

cpp关于const跟指针有问,路过的帮个忙看看吧

2013-03-21 
cpp关于const和指针有问,路过的帮个忙看看吧..........................................................

cpp关于const和指针有问,路过的帮个忙看看吧
........................
.........................
........................
①double rates[5]={88.99,100,19,18,17};
②const double locked[4]={0.8,0.7,0.6,0.5};
③const double * pc=rates; //合法
④pc=locked; //合法
..........................
..........................
..........................
③说明指针指向数据不可更改(即*pc),但是所指向的地址是可更改的(即pc),执行后*pc=rates[0]=88.99,pc=&rates[0],
④明显合法,但是执行后pc=&locked[0],也就是说现在&locked[0]中内容为88.99,也就是说*pc=*(&locked[0])=locked[0]=88.99,但是②却声明locked[0]=0.8为const

。。。。。。。。。。。。。
。。。。。。。。。。。。。。
问题是:声明为const型的locked数组,数值为什么可以变化


[解决办法]

引用:
引用:
引用:引用:
引用:引用:
你自己 printf 一下看看locked[0]的值 rates[0]的值 p的值 *p的值
额,codeblocks的结果让我大吃一惊,
竟然是*pc变啦,locke……


你真是专到牛尖尖里面去了。*pc对于内存来说是没有改变的,只是pc变了,所以看见的*pc的值不同,就好比内存中两个变量a和b,pc先指着a,后指着b,你说*pc变了,但是a和b没变,内存值没变,这就是因为用了const限制a、b不能被赋值。

热点排行