当前位置: 代码迷 >> C语言 >> 字符串指针与整形指针的转换问题!
  详细解决方案

字符串指针与整形指针的转换问题!

热度:407   发布时间:2007-11-19 13:26:10.0
字符串指针与整形指针的转换问题!

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

输出为:4649008

为什么输出这个值???

搜索更多相关的解决方案: 整形  指针  字符  

----------------解决方案--------------------------------------------------------

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


----------------解决方案--------------------------------------------------------
以下是引用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编辑过]


----------------解决方案--------------------------------------------------------
强制转换后,指向的地址是随机的么
----------------解决方案--------------------------------------------------------
把Char转成Int后 因为Int占4个字节,所以*p指向的是0x08这四个字节,把每个字符转成二进制,共有32位,再化成10进制就是你输出的结果
----------------解决方案--------------------------------------------------------
  相关解决方案