转换指针类型

lzlilj 2010-01-12 12:05:09
#include<iostream>
using namespace std;
int main()
{
char f='8',*p2;
int *p,*p1,b=123456,c;
p=(int *)&f;
p1=&b;
c=(int)p1;
p2=(char *)c;
cout<<c<<endl<<p2<<endl;
cout<<*p<<endl;
system("PAUSE");
}

结果为什么是乱码啊,高手们请帮帮我
...全文
114 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
macrojj 2010-01-13
  • 打赏
  • 举报
回复
p2 是个Char*在cout<<的时候 要输出到它的结束符 但是你把Char c给了p2 在c之后 并没有结束符
'\0'所以cout输出了乱码。
  • 打赏
  • 举报
回复
char f='8'

把f指向的内容作字符串输出,从而不能确定'\0'在那里结束,所以乱码/
lzlilj 2010-01-12
  • 打赏
  • 举报
回复
那怎么样转换就不是乱码了啊
冻结 2010-01-12
  • 打赏
  • 举报
回复
p=(int *)&f;
p1=&b;
c=(int)p1;
p2=(char *)c;

这几句转出来的本身就是乱码。
lzlilj 2010-01-12
  • 打赏
  • 举报
回复
p=(int *)&f 就是转换了,我觉得应该输出F的值,但是是乱码
stardust20 2010-01-12
  • 打赏
  • 举报
回复
p=(int *)&f;
把char*转为int*了
xingzhe2001 2010-01-12
  • 打赏
  • 举报
回复
p2指向b,可能是乱码阿
taodm 2010-01-12
  • 打赏
  • 举报
回复
理解C语言风格字符串以\0结束的含义没有?
ameng1110 2010-01-12
  • 打赏
  • 举报
回复
p=(int *)&f;
p1=&b;
c=(int)p1;
p2=(char *)c;
==>
c and p2都是b的地址值。
p是以f地址开头的int *,p的有效值是p指向空间的第一个字节,也就是f的值('8'),其余几个字节是随即的乱码。

该程序意义不明确,如果要用指针访问char型空间,只需定义char *即可,没必要用int*。
lovesi3344 2010-01-12
  • 打赏
  • 举报
回复
c=(int)p1; //指针转换成整数??

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧