|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
C++论坛
→
『 VC++/MFC 』
→ 内存的疑惑
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
628
人关注过本帖
标题:
内存的疑惑
只看楼主
加入收藏
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
结帖率:
87.93%
楼主
收藏
已结贴
√
问题点数:20 回复次数:9
内存的疑惑
范例
struct data{
int ival;
char *ptr;
};
data val2={1024,"Anna Livia Plurabelle"};
对于ptr的赋值是直接将指针指向字符串所占用的内存地址
还是先开辟内存存放字符串然后将指针指向 该字串的内存地址
应该怎样理解
搜索更多相关主题的帖子:
内存
2010-03-08 11:30
举报帖子
使用道具
赠送鲜花
cnfarer
等 级:
版主
威 望:
179
帖 子:3330
专家分:21157
注 册:2010-1-19
第
2
楼
收藏
得分:5
这是初始化,与赋值不同!
ptr的赋值是直接将指针指向字符串所占用的内存地址
★★★★★
为人民服务
★★★★★
2010-03-08 11:47
举报帖子
使用道具
赠送鲜花
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
3
楼
收藏
得分:0
那你的意思是 需要分配内存空间
2010-03-08 14:07
举报帖子
使用道具
赠送鲜花
cnfarer
等 级:
版主
威 望:
179
帖 子:3330
专家分:21157
注 册:2010-1-19
第
4
楼
收藏
得分:5
编译器会给字符串分配内存的。
data val2={1024,"Anna Livia Plurabelle"};
char *p="Anna Livia Plurabelle";
p和val2.ptr是指向同一个地址的!(VC编译器)
★★★★★
为人民服务
★★★★★
2010-03-08 16:26
举报帖子
使用道具
赠送鲜花
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
5
楼
收藏
得分:0
怎么会这样呢
那如果两个对象指向同一个内存地址 如果释放其中的一个对象那岂不是会造成另一个指针无效吗 还是这个内存也有一个引用计数 释放其中的一个指针就减少一次引用计数
另外 这种情况是只对字符串常量 还是对所有的常量都是这样处理
2010-03-09 08:38
举报帖子
使用道具
赠送鲜花
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
6
楼
收藏
得分:0
对了 现在这段代码是越看越问题多了
char *ptr照我的理解应该是一个char型的指针 对他的赋值应该是写成这样啊
char *ptr=&("Anna Livia Plurabelle") 怎么能直接将字符串赋给他
2010-03-09 08:41
举报帖子
使用道具
赠送鲜花
lijm1989
来 自:珠海
等 级:
贵宾
威 望:
12
帖 子:675
专家分:2844
注 册:2009-10-14
第
7
楼
收藏
得分:5
回到2楼看看----->这是初始化,与赋值不同!
.
.
char *ptr照我的理解应该是一个char型的指针 对他的赋值应该是写成这样啊
char *ptr=&("Anna Livia Plurabelle") 怎么能直接将字符串赋给他
.
.
可以在初始化的时候让一个字符指针指向一个字符串常量。
char *ptr = "Anna Livia Plurabelle";
.
.
结构体初始也就这样吧。。。
2010-03-09 22:08
举报帖子
使用道具
赠送鲜花
buxinqiufeng
等 级:
论坛游民
帖 子:20
专家分:55
注 册:2009-3-3
第
8
楼
收藏
得分:0
楼上正解,初始化时候,系统系统会分配内存空间的,
2010-03-10 10:55
举报帖子
使用道具
赠送鲜花
ldg628
等 级:
火箭侠
威 望:
3
帖 子:526
专家分:3036
注 册:2009-6-23
第
9
楼
收藏
得分:5
char *p="Anna Livia Plurabelle";
像这种字符串编译器在生成可执行文件时,把它放在了只读数据段,执行时,也是把它放在数据段上,也就是说,这个字符串是不能够被改变的,用反汇编就可以看到;
还有我们在用"Anna Livia Plurabelle"时,"Anna Livia Plurabelle"代表的就是这段字符串的地址,你可以通过printf("0x%x\j", "Anna Livia Plurabelle")打印一下就知道了
2010-03-11 17:07
举报帖子
使用道具
赠送鲜花
happynight
等 级:
贵宾
威 望:
15
帖 子:807
专家分:760
注 册:2008-4-26
第
10
楼
收藏
得分:0
谢谢各位的解答
2010-03-12 16:59
举报帖子
使用道具
赠送鲜花
10
1/1页
1
快速回复:
内存的疑惑
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.056140 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved