查看: 881|回复: 3
|
询问关于C++ 的POINTER
[复制链接]
|
|
我正在学习C++. 到这一part 的时候。。不解了。。请帮帮忙。
1。 // more pointers
2。 #include <iostream>
3。 using namespace std;
4。
5。 int main ()
6。 {
7。 int firstvalue = 5, secondvalue = 15;
8。 int * p1, * p2;
9。
10。 p1 = &firstvalue; // p1 = address of firstvalue
11。 p2 = &secondvalue; // p2 = address of secondvalue
12。 *p1 = 10; // value pointed by p1 = 10
13。 *p2 = *p1; // value pointed by p2 = value pointed by p1
14。 p1 = p2; // p1 = p2 (value of pointer is copied)
15。 *p1 = 20; // value pointed by p1 = 20
16。
17。 cout << "firstvalue is " << firstvalue << endl;
18。 cout << "secondvalue is " << secondvalue << endl;
19。 return 0;
20。}
这一段的答案是
firstvalue is 10
secondvalue is 20.
我的了解是。。第十行和十一行。。。说将 firstvalue and secondvalue 的 pointer address apply 入 P1 AND P2.
然后 十二和十三行,是P1 AND P2 的 value set 去10, 然后十四和十五就不明白了。。。
十四行是说将 VALUE POINT 10 带入 P1 AND P2 还是将 pointer address 带入 P1 AND P2?
然后第十五行将P1 的 value point 从 10 set 去 20?
酱紫为什么 firstvalue 是 10?
请指点。 谢谢。。 |
|
|
|
|
|
|
|
发表于 3-8-2007 10:49 AM
|
显示全部楼层
抗 发表于 3-8-2007 09:23 AM
然后 十二和十三行,是P1 AND P2 的 value set 去10, 然后十四和十五就不明白了。。。
十四行是说将 VALUE POINT 10 带入 P1 AND P2 还是将 pointer address 带入 P1 AND P2?
然后第十五行将P1 的 value point 从 10 set 去 20?
酱紫为什么 firstvalue 是 10?
我们这样看好了。。
location value name
0x1 5 first value
0x2 15 2nd value
0x3 0x1 p1
0x4 0x2 p2
after line 12 and line13:
0x1 10 first value
0x2 10 2nd value
0x3 0x1 p1
0x4 0x2 p2
after line 14
0x1 10 first value
0x2 10 2nd value
0x3 0x2 p1
0x4 0x2 p2
after line 15
0x1 10 first value
0x2 20 2nd value
0x3 0x2 p1
0x4 0x2 p2 |
|
|
|
|
|
|
|
发表于 3-8-2007 11:10 AM
|
显示全部楼层
- 10。 p1 = &firstvalue; // p1 = address of firstvalue
- 11。 p2 = &secondvalue; // p2 = address of secondvalue
- 12。 *p1 = 10; // value pointed by p1 = 10
- 13。 *p2 = *p1; // value pointed by p2 = value pointed by p1
- 14。 p1 = p2; // p1 = p2 (value of pointer is copied)
- 15。 *p1 = 20;
复制代码
10. 就是说 *p1 = firstvalue = 5
11. 就是说 *p2 = secondvalue = 15
12. *p1 = firstvalue = 10
13. *p2 = *p1 => secondvalue = firstvalue = 10
*p2,*p1是将他们的内容更改,但是p2依然还是指着 secondvalue 的 address
14. p1 = p2 = &secondvalue p1 变成 secondvalue 的 address
15. *p1 = secondvalue = 20 |
|
|
|
|
|
|
|

楼主 |
发表于 3-8-2007 01:24 PM
|
显示全部楼层
如果说,十五行
* P1 = 20 是参考
13 行
* P2 = * P1; 的话,那我明白了。
如果不是的话, 请更正。
谢谢大家的指教。。。!!  |
|
|
|
|
|
|
| |
本周最热论坛帖子
|