指针应用:判断系统是低位优先还是高位优先
定义一个整型变量x,让它的值为0x1。来观察下它在不同系统中的存储情况。在低位优先系统中,低位存放整数的低位,因此低地址的第一个字节的值为01。而高位优先系统中,低位存放整数的高位,因此低地址的第一个字节为00。因此如果把这个内存地址所在的第一个字节取出来,就可以区别系统是低位优先和高位优先了。
那么如何取得这个整数的低地址所在的这个字节呢?根据指针的定义,只需要定义一个char类型的指针,指向整数x的地址,那么char类型的指针获取的,就是低地址所在的这个字节。于是得到下面的算法:
/*return value :0—big-endian ;1—little-endian*/
int get_endian()
{
int x=0x1;
char *p=(char*)&x;
return *p ;
}
int main(void)
{
printf(”The platform %s \n ”,get_endian() ? ”is little-endian”:”is big-endian”);
return 0;
}