| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 287 人关注过本帖
标题:字符串指针与整形指针的转换问题!
收藏  订阅  推荐  打印 
zw1213
Rank: 1
等级:新手上路
帖子:21
积分:312
注册:2007-4-14
字符串指针与整形指针的转换问题!

char *a[]={"0x08","0x02","0x03"};
int *p=(int*)a;
cout<<*p<<endl;

输出为:4649008

为什么输出这个值???

搜索更多相关主题的帖子: 整形  指针  字符  
2007-11-19 13:26
静思
Rank: 4
来自:沈阳
等级:高级会员
威望:8
帖子:623
积分:6412
注册:2006-2-28

经过强制类型转换后,p的值与a的值相等,但a的指向的数据类型是字符串,而p指向的数据类型是整型。p指向了内存中不确定的地方


英者自知,雄者自胜
2007-11-19 14:04
cosdos
Rank: 6Rank: 6
来自:ShangHai
等级:金牌会员
威望:1
帖子:1377
积分:14374
注册:2007-6-19

以下是引用zw1213在2007-11-19 13:26:10的发言:

char *a[]={"0x08","0x02","0x03"};
int *p=(int*)a;
cout<<*p<<endl;

输出为:4649008

为什么输出这个值???

同 2楼 ,强制转换。


补充:
*p == a;

p[0] 为 0x08 的地址。

char * cp;
cp = (char *)(p[0]); // "0x08"

cout<< cp <<endl; // 0x08


对了我不懂 C++
C 的话
printf("%s", (char *)(p[0]));

[此贴子已经被作者于2007-11-19 14:59:12编辑过]


—>〉Sun〈<—
2007-11-19 14:50
zw1213
Rank: 1
等级:新手上路
帖子:21
积分:312
注册:2007-4-14

强制转换后,指向的地址是随机的么
2007-11-20 08:40
nianshi
Rank: 3Rank: 3
等级:中级会员
帖子:193
积分:2111
注册:2007-11-7

把Char转成Int后 因为Int占4个字节,所以*p指向的是0x08这四个字节,把每个字符转成二进制,共有32位,再化成10进制就是你输出的结果

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2007-11-20 10:38
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.099743 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved