avatar
一道c++ primer的问题# JobHunting - 待字闺中
y*i
1
(a) int i = -1;
(b) const int ic = i;
(c) const int *pic = ⁣
(d) int *const cpi = ⁣
(e) const int *const cpic = ⁣
答案说(d)不合法,其他都合法。d怎么不合法了,不是给一个const 的指针赋值了吗
avatar
g*y
2
ic is a const int
but cpi is not pointing to a const int

【在 y*******i 的大作中提到】
: (a) int i = -1;
: (b) const int ic = i;
: (c) const int *pic = ⁣
: (d) int *const cpi = ⁣
: (e) const int *const cpic = ⁣
: 答案说(d)不合法,其他都合法。d怎么不合法了,不是给一个const 的指针赋值了吗
: ?

avatar
y*i
3
(e)怎么就合法了,e不但指针是const,还多了一个它指向的对象也要const?
avatar
j*w
4

ic is a constant. that is, the value of ic can not be changed.
(d) int * const cpi. It means, cpi is a constant, and cpi points to an int.
Since cpi is a pointer. "cpi is a constant" just means the cpi points to a "
fixed" address. Say nothing about the content of that fixed address.
If (d) is valid, we can do (*cpi)++. In this case, the value of ic is
changed. It's wrong.
For (e)
const int *const cpic. cpic is a constant, and is pointed to a const int.
Since ic is also a const int. It's good.
Just my 0.02.

【在 y*******i 的大作中提到】
: (a) int i = -1;
: (b) const int ic = i;
: (c) const int *pic = ⁣
: (d) int *const cpi = ⁣
: (e) const int *const cpic = ⁣
: 答案说(d)不合法,其他都合法。d怎么不合法了,不是给一个const 的指针赋值了吗
: ?

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。