|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 C++教室 』
→ 指针内存的分配问题
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
1011
人关注过本帖
标题:
指针内存的分配问题
只看楼主
加入收藏
乔峰不会
等 级:
新手上路
帖 子:11
专家分:7
注 册:2009-10-21
结帖率:
50%
楼主
收藏
已结贴
√
问题点数:10 回复次数:8
指针内存的分配问题
我想问一下
int *p;
//此时系统已经为p分配了四个字节的内存空间,因为它是一个int *型的变量,但是它保存的是一个地址呀,那么此时系统有没有给它分配一段地址让 p 这个int *型变量来保存啊?
如果有,那么这段地址是固定的吗,是什么?当我在继续写
p = new int ;时,我感觉系统一定为p 分配了一段地址让它保存,那么先前所分配的地址(如果有的话)系统怎么处理了?
搜索更多相关主题的帖子:
分配问题
内存
指针
2009-10-23 10:24
举报帖子
使用道具
赠送鲜花
debroa723
等 级:
贵宾
威 望:
23
帖 子:862
专家分:1954
注 册:2008-10-12
第
2
楼
收藏
得分:1
&p不就可以看到变量p的地址,比较它的值和p值有什么不同
cout<<&p<<p<<*p;
p = new int ;这句话就是让系统分配一个int类型的内存空间,将该空间的地址值存入到变量p所在的内存地址里
2009-10-23 18:35
举报帖子
使用道具
赠送鲜花
gz81
等 级:
职业侠客
帖 子:137
专家分:369
注 册:2008-5-1
第
3
楼
收藏
得分:1
以下是引用
乔峰不会
在2009-10-23 10:24:55的发言:
我想问一下
int *p;
//此时系统已经为p分配了四个字节的内存空间,因为它是一个int *型的变量,但是它保存的是一个地址呀,那么此时系统有没有给它分配一段地址让 p 这个int *型变量来保存啊?
如果有,那么这 ...
分配了四个字节(32位机)的地址保存指针变量。
p = new int ; 那么先前所分配的地址(如果有的话)系统怎么处理了?会用新的地址值覆盖原有的。就跟int i=m;一样。
我的空间:http://student./space.php?uid=116706
2009-10-24 09:46
举报帖子
使用道具
赠送鲜花
mos6
等 级:
论坛游民
帖 子:18
专家分:27
注 册:2009-4-19
第
4
楼
收藏
得分:1
回复 2楼 debroa723
输出如cout<<*p<<"
"<<p<<"
"<<&p,
图片附件: 游客没有浏览图片的权限,请
登录
或
注册
得到的一个值,地址,最后那个是什么,还别的什么
天下虽大,却任我行!!
2009-10-24 10:27
举报帖子
使用道具
赠送鲜花
乔峰不会
等 级:
新手上路
帖 子:11
专家分:7
注 册:2009-10-21
第
5
楼
收藏
得分:0
回复 2楼 debroa723
2 楼,我采用了你的方法,
double *p;
cout<<p<<endl;
cout<<&p<<endl;
cout<<*p<<endl;//如果有此句,就不能输出任何东西。
编译和执行时都没错,但是就是不能执行cout<<*p;如果删掉此句就能执行了。
是不是在double *p ;后,系统已经为p分配了8个字节(double类型)的空间让p指向,但是此时这个内存地址上没有任何东西,所以不能read呀??
如果我执行下面语句时,
p= new double;
cout<<p<<endl<<*p<<endl<<&p<<endl;
就能执行了,此时是不是系统已经为*p随机分配了一个数呀??
2009-10-24 13:21
举报帖子
使用道具
赠送鲜花
heryanlong
等 级:
新手上路
帖 子:2
专家分:2
注 册:2007-7-29
第
6
楼
收藏
得分:1
int * p;在系统初始化p指针时,也是给他分配了一个地址。你可以定义一个二级指针如**pp;然后将p的地址赋给二级指针:pp=&p;你可以运行一下系统,查看一下*pp的值.
2009-10-24 17:02
举报帖子
使用道具
赠送鲜花
heryanlong
等 级:
新手上路
帖 子:2
专家分:2
注 册:2007-7-29
第
7
楼
收藏
得分:0
回复 4楼 mos6
你在执行cout <<*p;时,没有为这个指针初始化,编译器当然报错啦!
2009-10-24 17:04
举报帖子
使用道具
赠送鲜花
东西邪毒
等 级:
新手上路
帖 子:19
专家分:9
注 册:2009-5-8
第
8
楼
收藏
得分:1
int p;系统分配一个地址来存储p,;这个地址值存放在一个空间中,p值随机;
同样,int *p;系统分配一个地址来存储p,这个地址值存放在一个空间中,p值随机,只不过这里的p是一个指向整形数的指针
当 p = new int时,系统new一个空间,这个空间的地址赋给p,这样p就被初始化了
2009-10-24 21:18
举报帖子
使用道具
赠送鲜花
supermat
等 级:
论坛游民
帖 子:10
专家分:29
注 册:2009-1-19
第
9
楼
收藏
得分:1
先前的地址被覆盖了
2009-10-27 21:34
举报帖子
使用道具
赠送鲜花
9
1/1页
1
快速回复:
指针内存的分配问题
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.017966 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved