打印

数组名

[复制链接]
3139|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hjs1618|  楼主 | 2013-3-15 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void main (void)
{
     uchar arr[10]={1,2,3};
    volatile ushort _y8;
   _y8 = *((uchar*)&arr);---------------------_y8被赋值为0x0001;
   _y8 = *(&arr);             ---------------------_y8被赋值为0x0001;   这为什么是这个值?&arr  这个是指向整个数组的,应该是取整个数组的值,结果应该是0x0201
}

相关帖子

沙发
airwill| | 2013-3-15 09:08 | 只看该作者
想要结果是 0x0201, 你就:

_y8 = *((ushort*)arr);

使用特权

评论回复
板凳
dirtwillfly| | 2013-3-15 09:16 | 只看该作者
楼主的ushort和uchar貌似位数不一样,强制格式转换会有一些问题

使用特权

评论回复
地板
ayb_ice| | 2013-3-15 10:24 | 只看该作者
*(&arr);
意思是取字节数据,因为arr本来就是字节数组,将结果扩展成16位数再输出,就是将arr[0]扩展成16...

使用特权

评论回复
5
hjs1618|  楼主 | 2013-3-15 11:16 | 只看该作者
&arr这个表达式中的arr是指向整个数组,&arr是指向整个数组的指针,当&arr+1,就相当于移动数组长度,指向下一个内存,那对*(&arr)取值,这时应该取回来的时整个数组的值吧?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:单片机学习交流群:19131564  欢迎加入

13

主题

516

帖子

1

粉丝