利用公用体的特性来确定CPU的数据对齐的端模式

来源:互联网 发布:江苏运时数据 编辑:程序博客网 时间:2024/05/16 09:53

数据对齐的端模式与处理器有关,详细见图:


利用共用体的特性:所占用的大小是共用体中所定义的


最大类型的大小,若只有两个变量,那么最小的那个变量

指向的是最大类型的地址的最低位地址,从低位往高位递增

所以利用这种方法,可以检验CPU的数据存储方式 是 大端存储
还是 小端存储。
 
tips1:
小端存储:高地址储存高位,低地址储存低位。
大端存储:低地址储存高位,高地址储存低位。


tips2:   

指针的类型 决定指针移动的步长,比如:char *p

*(p+1)  就是指向下一个内存格(因为char类型占用内存大小为1个字节)

下面贴代码:


#include "stdio.h"
union endin{int i;char c;}temp;int main(void){if(checkCPU()) printf("small\n");else printf("big\n");return 0;}int checkCPU(){temp.i=1;if(temp.c==1) return 1;else return 0;}
也可以利用tips2的原理来寻找另外一个方法


#include "stdio.h"int main(){int s=1;char *p;p=&s;//令p指向编译器为s分配的内存的第一块地址//if(*p==1) printf("small\n");else printf("big\n");}

p=&s是使 *p指向编译器为s分配的内存的第一块地址,而第一块地址通常是最低位,然后地址依次向上递增,也有特殊情况,当*p指向的最高位的时候,该方法就应作出调整。

0 0
原创粉丝点击