| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:新人的问题 希望达人帮忙
只看楼主 加入收藏
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
快速回复:新人的问题 希望达人帮忙
数据加载中...
 
   



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

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