o***e 发帖数: 497 | 1 #include
int main()
{
int i=37;
int &ref = i;
const int * const cRef = &ref;
i++;
printf("%d\n", *cRef);
}
这个结果是多少?为什么?
谢谢! |
f*******5 发帖数: 52 | 2 抛砖引玉,cRef是指向常量的指针常量,第一个const表明"不能通过解引用"改变指向
对象的值,把
i++成(*cRef)++就会出错。但我猜如果不通过解引用cRef,而是直接改变cRef指向变量
i是允许的。
估计编译器在内部生成一个i的副本,不能改变此副本的值?等高人解答
【在 o***e 的大作中提到】 : #include : int main() : { : int i=37; : int &ref = i; : const int * const cRef = &ref; : i++; : printf("%d\n", *cRef); : } : 这个结果是多少?为什么?
|
j***i 发帖数: 1278 | 3 所以说const ref 不能保证 别的ref 不改变值。。 这题应该是38
【在 f*******5 的大作中提到】 : 抛砖引玉,cRef是指向常量的指针常量,第一个const表明"不能通过解引用"改变指向 : 对象的值,把 : i++成(*cRef)++就会出错。但我猜如果不通过解引用cRef,而是直接改变cRef指向变量 : i是允许的。 : 估计编译器在内部生成一个i的副本,不能改变此副本的值?等高人解答
|