标题:新人的问题 希望达人帮忙
只看楼主
wjire
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-29
 问题点数:0 回复次数:6 
新人的问题 希望达人帮忙
int a=10;
int *pa=&a;
cout<<&pa<<'\t'<<pa<<endl;

书上说 &pa 是pa的地址
pa 是a的地址
小弟实在是不明白
请帮忙


搜索更多相关主题的帖子: 新人 int cout 
2007-06-29 17:44
yushui
Rank: 3Rank: 3
等 级:论坛游民
威 望:7
帖 子:1355
专家分:22
注 册:2006-7-19
得分:0 
&amp;是取地址啊  所以&amp;pa取pa的地址  *pa=&amp;a是将a的地址赋给pa  

fighting!from now on!
2007-06-29 18:21
wjire
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-29
得分:0 
但是我看运行结果 2个地址很接近 只是末位数字差了2
它们2者有什么联系吗?
2007-06-29 19:22
huozoo
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2007-6-28
得分:0 
你要理解pa是什么?是指针变量。
用来做什么?存放地址。
就像你这道题目,把a 的地址赋给了指针变量pa,所以pa->a的地址。
理解了这点,我们再来理解&pa。你定义了pa是指针变量,它也是有地址的。
指针变量是存放地址的变量。这样理解```
我知道这是刚学指针时大家经常问的问题,在此详细说明下。
希望你看后能理解。[em04
2007-06-29 19:22
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 
假设内存如下(框内为内存单元值, 框外为内存单元地址):
*----*
| 10 |1001 a变量
*----*
|1001|1002 pa指针
*----*

可以看到, a的值是10, 就是在int a=10;这句设置的.
对于第2句int *pa=&a;
前面的int * 是定义指向int的指针, 也就是pa是个指针
后面&a, 如yushui所说, &是取地址运算符, 提取a变量的地址, 这里就是1001, 所以&a=1001
于是pa的内容就是1001(如图)..
第3句cout那句, &pa是对pa取地址, 也就是1002, pa是直接使用指针, 即1001

女侠,约吗?
2007-06-29 19:22
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 
你看到的差了2 就和我例子里的1001, 1002一样 是连续分配空间造成的.
根据变量的内存大小不同, 相差可能是2, 4, 或其他..
使用sizeof(变量)操作查看变量占用的内存大小(字节).
比如
sizeof(char) -> 1
sizeof(int) -> 4 (因系统而异)

女侠,约吗?
2007-06-29 19:28
wjire
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2007-6-29
得分:0 
强 感谢啊
太感谢了

2007-06-29 19:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-151401-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.664768 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved