佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 881|回复: 3

询问关于C++ 的POINTER

[复制链接]
发表于 3-8-2007 09:23 AM | 显示全部楼层 |阅读模式
我正在学习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?
请指点。 谢谢。。
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层

  1. 10。  p1 = &firstvalue;  // p1 = address of firstvalue
  2. 11。  p2 = &secondvalue; // p2 = address of secondvalue
  3. 12。  *p1 = 10;          // value pointed by p1 = 10
  4. 13。  *p2 = *p1;         // value pointed by p2 = value pointed by p1
  5. 14。  p1 = p2;           // p1 = p2 (value of pointer is copied)
  6. 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; 的话,那我明白了。

如果不是的话, 请更正。

谢谢大家的指教。。。!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 18-9-2025 12:29 AM , Processed in 0.115964 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表