您的位置:首页 > 其它

用指针解决的两个问题

2009-12-09 02:38 316 查看
      前段时间找工作,笔试面试做了不少的题,其中有两个用指针解决的问题,题目不难,但做法感觉挺新的,个人觉得做得不错,拿来跟大家分享,也请大家给看看其中的不足。
1。写一个函数判断某系统是大字节序还是小字节序,不可以使用库函数。
我的答案:
int endian()    //大字节序返回0,小字节序返回1
{
    int test = 1;
    int *p = &test;
    return (int)(*(char*)p);
}
解释一下:指针p指向的是test的低端地址,将此地址转换成char型在将其中的值转换成int就是test地址低8为的存储值了,如果是1,说明数据的低位存在内存的低地址中,如果是零则相反。
PS:所谓大小字节序是指数据的高低数据位在内存中的存储位置,和处理器有关。
2。写一个判断系统字长的函数,不可以使用库函数。
我的答案:
int word_length()   //返回字长,单位bit
{
   int test[2];
   return ( (char*)(&test[1]) - (char*)(&test[0]) ) * 8;
}
也解释一下吧,不同类型的指针指向的内存空间的长度是不同的,int型指针指向的刚好是一个字长,char型的是一个字节,将test[1]和test[0]地址转换成char型再想减,即可知道整型的长度,又要求返回位长度,所以乘以8。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: