char ch = *(char *)&d;中的char*是什么?

doubled=3.1416;charch=*(char*)&d;cout<<ch<<endl;charch=*(char*)&d这句不太懂;解释一下这个程序是什么意思?... double d = 3.1416;
char ch = *(char *)&d;
cout<<ch<<endl;
char ch = *(char *)&d这句不太懂;解释一下这个程序是什么意思?
展开
 我来答
xingyunbuzui
推荐于2018-04-06 · TA获得超过1160个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:389万
展开全部
现有两个基本点:
1 double一般是8字节(32位和64位操作系统)
2 char是1个字节。

现在来解释char ch = *(char *)&d;
1 &d : 就是取d的内存地址。换句话说是指向8个字节的类型指针。
2 (char *)&d,将该地址由double*转换为char*,指针类型转换为指向一个字节的类型指针。
3 *(char *)&d。取该指针(char*)的值,其实换句话说是取一个字节的内存数据,并赋予数据指针类型的类型。
4 char ch = *(char *)&d。就简单了。
总结:就是取double数d的第一个字节,并转换为char类型,赋值给ch。

再次总结:注意C程序员对待任何变量,并不应该有强烈的类型约束,优秀的C程序员更应该关注的是内存布局和内存数据的访问解释。
tyl925450909
2012-08-31 · 超过15用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:51.2万
展开全部
取出d的地址 强制转换成字符字符指针 这个就可以访问一个字节的内容 而不是8个字节的内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3038d88
2012-08-31 · TA获得超过1097个赞
知道小有建树答主
回答量:1670
采纳率:0%
帮助的人:1169万
展开全部
取 d的地址 强转char* 型.
追问
char*是什么?
追答
类型: 字符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
陪你看新新
2018-06-20
知道答主
回答量:6
采纳率:0%
帮助的人:3434
展开全部
我只是来保存答案的?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式