语句 *((char *)&FhZero) 是什么意思?

[复制链接]
2994|12
 楼主| sackfc 发表于 2011-6-12 08:25 | 显示全部楼层 |阅读模式
fontlose 发表于 2011-6-12 08:39 | 显示全部楼层
&FhZero取变量FhZero的地址,(char *)再把这个地址强制换成指向char的指针,最后取这个值
 楼主| sackfc 发表于 2011-6-12 08:50 | 显示全部楼层
&FhZero取变量FhZero的地址,(char *)再把这个地址强制换成指向char的指针,最后取这个值
fontlose 发表于 2011-6-12 08:39

没太看明白,那最后的结果和变量FhZero是什么关系?
fontlose 发表于 2011-6-12 08:58 | 显示全部楼层
就是读变量所在的内存地址开始的第一个字节
 楼主| sackfc 发表于 2011-6-12 09:07 | 显示全部楼层
就是读变量所在的内存地址开始的第一个字节
fontlose 发表于 2011-6-12 08:58

我理解为:*((char *)&FhZero) ,其结果其实就是FhZero,对不?
红金龙吸味 发表于 2011-6-12 09:55 | 显示全部楼层
参考4L。LZ要弄清楚数据类型的概念。
fontlose 发表于 2011-6-12 12:06 | 显示全部楼层
晕 1个小时才能发5贴,要等一个小时才能回复。

如果是FhZero是char变量就是
short变量如果单片机是小端模式时  就是short变量的低8位了
lilihua0721 发表于 2011-6-12 13:00 | 显示全部楼层
4、7楼正解!
yuyi21ic 发表于 2011-6-12 13:54 | 显示全部楼层
7L解释的正确。
jack_shine 发表于 2011-6-12 17:52 | 显示全部楼层
7# fontlose 一小时限发五帖?  什么时候的规定
hanyy1988 发表于 2011-6-18 00:15 | 显示全部楼层
谢谢楼主提问,学习了啊
joyme 发表于 2011-6-18 10:41 | 显示全部楼层
估计是考试用的吧,程序没有必要写得这么晦涩

不管在内存里怎么存,程序定义的变量取低8位都可以直接 (char)VAL&0xff
除非定义的是指针才需要考虑内存里的存放顺序(即大小模式)
johnwjl 发表于 2011-6-18 16:42 | 显示全部楼层
用指针确实要考虑大小端模式,从以下大小端判断函数可窥见一斑。

// 测试大小端模式
// 返回 0:big endian     大端模式(高字节低地址,低字节高地址)
// 返回 1:little endian  小端模式(高字节高地址,低字节低地址)
unsigned char IDE_test_endian(void)
{
  unsigned int a = 0x1234;
  return (*((unsigned char *)&a) == 0x34);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:活到老,学到老

13

主题

69

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部