C ++指针考试修订版

时间:2014-01-19 14:17:12

标签: c++ pointers

大家好我所有考试都涉及c ++,我只是在指点上苦苦挣扎,任何人都可以协助,

这是一个示例问题

What will be printed out on execution and p starts with address 0x00C0

float p = 11.0; 
p = p + 2.0;

float *q = &p; 
float *r = q; 
*r = *r + 1; 

int *s = new int(); 
*s = *q; 
*q = (*q)*10.0; 

*r = 15.0;

cout << p <<endl;
cout << *q <<endl;
cout << r <<endl;
cout << *s <<endl;
cout << *r <<endl;

现在我编译并运行了这个程序,但我无法理解* q的值= 15.是否不会乘以10?

r也是记忆中的地址,任何人都可以向我解释一下吗?

帮助appriciated!

1 个答案:

答案 0 :(得分:1)

总是尝试用变量值而不是指针值来思考。 如果多个指针指向相同的内存位置,则打印指针(* ptr)的值将始终为所有指针提供相同的输出。

float p = 11.0; 
p = p + 2.0;//p = 13

float *q = &p; 
float *r = q; 
*r = *r + 1;//p = 14 

int *s = new int(); 
*s = *q;//*s = 14 
*q = (*q)*10.0;//p = 140 

*r = 15.0;//p = 15//somehow did not see this line :P

cout << p <<endl;//15
cout << *q <<endl;//15
cout << r <<endl;//0x00C0
cout << *s <<endl;//14
cout << *r <<endl;//15

证明here