嘟嘟智能公司破产:关于C++中的常量CONST问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 16:00:12
问题1:
还有一个问就是a=&y这个是什么意思,a是一个什么类型的变量???是不是一个指针类型的变量?

对于指针
1. const int *r=&x; //声明r为一个指向常量的x的指针,r指向的对象不能被修改,但他可以指向任何地址的常量

2. int const *r=&x; //与用法1完全等价,没有任何区别

3. int * const r=&x; //声明r为一个常量指针,他指向x,r这个指针的指向不能被修改,但他指向的地址的内容可以修改

4. const int * const r=&x; //综合1、3用法,r是一个指向常量的常量型指针
问题2:
问题1里面的a变量是不是等同于上面的r变量一个道理?r的类型是不是INT *?也就是INT的指针

a=&y这个是什么意思,a是一个什么类型的变量???是不是一个指针类型的变量?

a是指针类型变量。如果把a定义成别的类型,必须对&y进行强制转换。比如若a是int类型,则写成a=(int)&y才不会报错,因为从指针向别的类型转换不是隐式进行的。

r的类型是const int*,没有给出a的定义,不好判断r是不是等同于a。
在c++里面,int* 和 const int *是不一样。
若:
const int *p1;
int *p2;
const int a1;
int a2;
p1=&a1;//正确
p1=&a2;//错误
p2=&a1;//警告,感觉向可以降级处理
p2=&a2;//正确

这里p1,p2是不一样,不能把p2的值赋给p1,报错;p1赋给p2有警告,好象。
没有vc,不能测试,理论上应该这样。