大家好我所有考试都涉及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!
答案 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。