| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1110 人关注过本帖
标题:这种用法是称为字节数组吗
只看楼主 加入收藏
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
结帖率:100%
收藏
已结贴  问题点数:14 回复次数:3 
这种用法是称为字节数组吗
这是一段用来测试大小端的代码:
程序代码:
#include <stdio.h>

int main(void)
{
    short int x;
    char x1,x2;
    x = 0x1122;
    x1 = ((char *)&x)[0];    //低地址
    x2 = ((char *)&x)[1];    //高地址
    printf("x1=0x%x\n",x1);
    printf("x2=0x%x\n",x2);
    return 0;
}

其中: x1 = ((char *)&x)[0];         
       x2 = ((char *)&x)[1];   
为什么可以这样来用?这是字节数组吗?
2016-02-24 20:25
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
對你代碼顯示的而言,是16位機,int就是char[2]的數組,對32位機,是char[4]。

授人以渔,不授人以鱼。
2016-02-24 20:27
snailqiu
Rank: 2
等 级:论坛游民
帖 子:59
专家分:45
注 册:2007-9-26
收藏
得分:0 
回复 2楼 TonyDeng
    x1 = ((char *)&x)[0];   
    x2 = ((char *)&x)[1];

这两句我这样理解对不对:
先取出x的地址,再强制转换成指向字符的指针,指针指向的就是x里的内容,因为x是short型,所以占用两个字节,因此指针指向这两个连续存储的字节,,然后就可以把它看成一个数组,把第1个元素赋给x1,把第2个元素赋给x3.
2016-02-24 21:28
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:7 
可以這麽説吧,大致正確,過細的就不糾纏了。

授人以渔,不授人以鱼。
2016-02-24 21:31
快速回复:这种用法是称为字节数组吗
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039007 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved