打印

数组存储问题

[复制链接]
951|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hsbjb|  楼主 | 2012-8-9 18:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
//定义一个数组:
_int8 a[4];
//再定义一个变量
_int32 b;

//显然,前者和后者都占了32个字节。那么请问他们在a和b在物理存储上有什么区别,如果没有区别,又怎么区分谁是数组,谁是单独一个变量?

相关帖子

沙发
火箭球迷| | 2012-8-9 20:47 | 只看该作者
小尾数处理器上有区别
大尾数没区别

使用特权

评论回复
板凳
sinadz| | 2012-8-9 20:53 | 只看该作者
主要区别在于使用方式,即你把它当成什么类型的来使用,另一个区别在于int8类型在大小端系统下是一致的,int32则不一样,所以你把_int8 a[4]和_int32 b之间互相复制的话,在不同的系统上得到的结果可能不一致。

使用特权

评论回复
地板
txcy| | 2012-8-9 21:05 | 只看该作者
1、它们访问的最小单位不一样,一个是8bit,一个32bit;
2、它们在物理存储上极有可能不一样,这取决于不同的环境,比如:
  a. 在某些平台上会用机器字长来表达一个字节,这样a[4]就相当于int[4];
  b. 在某些平台大小端的差异,会导致a[4]和b的字节顺序是不一样的,例如一个是0x12345678,一个是0x78563412。

使用特权

评论回复
5
shenmulzb1985| | 2012-8-10 14:30 | 只看该作者
楼上的分析比较到位的,佩服,顺便也学习下的

使用特权

评论回复
6
summerlover| | 2012-9-11 22:18 | 只看该作者
不错,也跟着学习学习

使用特权

评论回复
7
wulala| | 2012-9-13 20:45 | 只看该作者
好像还是不懂

使用特权

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

本版积分规则

193

主题

2354

帖子

0

粉丝