| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3058 人关注过本帖
标题:字符串指针与整形指针的转换问题!
只看楼主 加入收藏
zw1213
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-4-14
收藏
 问题点数:0 回复次数:4 
字符串指针与整形指针的转换问题!

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

输出为:4649008

为什么输出这个值???

搜索更多相关主题的帖子: 整形 指针 字符 
2007-11-19 13:26
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 

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


英者自知,雄者自胜
2007-11-19 14:04
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:0 
以下是引用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
专家分:0
注 册:2007-4-14
收藏
得分:0 
强制转换后,指向的地址是随机的么
2007-11-20 08:40
nianshi
Rank: 1
等 级:新手上路
帖 子:199
专家分:0
注 册:2007-11-7
收藏
得分:0 
把Char转成Int后 因为Int占4个字节,所以*p指向的是0x08这四个字节,把每个字符转成二进制,共有32位,再化成10进制就是你输出的结果

行至水穷处 坐看去起时
C语言QQ群1:51871776  群2:26313099  群3:47145282
2007-11-20 10:38
快速回复:字符串指针与整形指针的转换问题!
数据加载中...
 
   



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

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