C++的一道习题

解释下列的定义,指出其中哪些是非法的:
1:int i;
2:const int ic
3:const int *pic
4:int *const cpi
5:const int *const cpic 4非法,没有初始化。
下列哪些初始化是非法的?为什么?
6:int i=-1;
7:const int ic=i;
8:const int *pic=&ic
9:int *const cpi=⁣
10:const int *const cpic=&i; 1 3 4 5非法。
根据上述定义,下列哪些赋值运算是合法的,为什么?
11:i=ic;
12:pic=⁣
13:cpi=pic;
14:pic=cprc;
15:cprc=⁣
16:ic=*cpic; 真不懂。
//请指出上述的错误,并说明原因。

int i //声明一个整型变量
const int ic //声明了一个 整形常量,常量必须在声明的时候就初始化,这个声明也是不合法的。
并且常量一旦在声明中初始化,以后的赋值都是错误的。
const int * pic // 声明了一个 指向 整型常量 的一个指针,这种情况下,指针本身能够改变,就是
能够改变指针的值让它指向另外一个整型常量。 但是,指针指向的 整型常量不
能改变。即 pic 可以改变, *pic不可以改变
int * const cpi // 声明了一个指向整型的 常量指针,与上面相反,这次,指针本身的值不能改变,
但指针指向的整型变量能改变。即 cpi不可以改变, *cpi可以改变
const int* const cpi //显而易见, 这次是 无论指针本身 还是他指向的整型变量都不能改变
即 cpi不可以改变, *cpi也不可以改变
具体到你的题目:
6 是对的
7 是对的
8是对的
9 是错的 因为9中的cpi 虽然自己不能改变,但是他指向的值可以改变,但是此时他指向一个
ic 是一个整型常量,即cpi可能改变常量的值,当然是错的咯
10 是对的
其他的就不说了哈, 总之, 常量 必须在 声明的时候就初始化,不初始化就是错的! 一旦初始化后 在改变他 也是错的!这句话对指针常量和整型常量都成立!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-21
解释下列的定义,指出其中哪些是非法的:
1:int i;//合法的
2:const int ic//不合法
3:const int *pic//合法
4:int *const cpi//不合法
5:const int *const cpic 4非法,没有初始化。追问

为什么const int ic不合法?求请教

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网