返回信息流刚看完第4章,被指针的东西给虐了。
遇到一个小问题:
4.20题:
说:下列哪些初始化是合法的?为什么?
(a) int i = -1;
(b) const int ic = i ;
(c) const int *pic = ⁣
(d) int *const cpi = ⁣
(e) const int *const cpic = ⁣
【解答】
(a) 合法:定义了一个int 型对象i,并用int 型字面值-1 对其进行初始化。
(b) 合法:定义了一个int 型const 对象ic,并用int 型对象对其进行初始
化。
(c) 合法:定义了一个指向int 型const 对象的指针pic,并用ic 的地址对
其进行初始化。
(d) 不合法:cpi 是一个指向int 型对象的const 指针,不能用const int
型对象ic 的地址对其进行初始化。
(e) 合法:定义了一个指向int 型const 对象的const 指针cpic,并用ic
的地址对其进行初始化。
对于(d)的解释表示不能理解。。为什么const int型对象ic的地址就不能初始化一个const指针了呢?
这说不通啊。
希望同学们能给个更详细的解释。
这是一条镜像帖。来源:北邮人论坛 / cpp / #73279同步于 2013/8/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
看C++primer遇到的小问题
feihaiwuya
2013/8/18镜像同步4 回复
订阅后,新回复会通过你的通知中心匿名送达。
4 条回复
明确两个概念:指向const对象的指针与const指针。const 类型的对象只能初始化指向const对象的指针。d是一个const指针,但其不是指向const对象的指针。const指针是这个指针变量本身是const的,一旦初始化了就不能改变其保存的地址,而指向const对象的指针是不能对其指向对象做任何修改。。两者不一样。。。
因为cpi是个指向int型的指针。想把一个const int型的变量交给一个int型指针去控制,当然就不合法了。
对比e捉摸一下。
iPhone客户端1.3发布
【 在 disneymickey 的大作中提到: 】
: 明确两个概念:指向const对象的指针与const指针。const 类型的对象只能初始化指向const对象的指针。d是一个const指针,但其不是指向const对象的指针。const指针是这个指针变量本身是const的,一旦初始化了就不能改变其保存的地址,而指向const对象的指针是不能对其指向对象做任何修改。。两者不一样。。。
哦。我貌似懂了。。谢谢啦。
【 在 shuicaibxx 的大作中提到: 】
: 因为cpi是个指向int型的指针。想把一个const int型的变量交给一个int型指针去控制,当然就不合法了。
: 对比e捉摸一下。
: iPhone客户端1.3发布
貌似明白了,const int型,必须也是const型来搞定是吧。。