字符串指针与整形指针的转换问题!
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进制就是你输出的结果
----------------解决方案--------------------------------------------------------