gpt4 book ai didi

C++指针考试修订

转载 作者:行者123 更新时间:2023-11-28 07:09:38 25 4
gpt4 key购买 nike

大家好,我有一个涉及 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 是内存中的一个地址,谁能给我解释一下吗?

帮助应用!

最佳答案

总是尝试从变量值而不是指针值的角度来思考。如果多个指针指向同一内存位置,则打印指针 (*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 .

关于C++指针考试修订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21217865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com