用指针解决的两个问题
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。
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。
相关文章推荐
- 【链表】C++快慢两个指针解决问题(分别求倒数第k个、中间以及环的入口结点)
- 解决问题--VS2012中一个Panel覆盖另一个Panel时拖动时容易造成两个控件成父子关系的避免
- 解决Windows内存问题的两个小工具RamMap和VMMap
- Entity Framework 入门,解决两个常见问题的方法,。
- quartz整合Spring注入Service时空指针异常问题解决
- 智能指针weak_ptr解决循环依赖问题
- c/c++ MAP遇到的两个问题及解决办法
- 解决driver.findElement(By)运行到此处报null指针问题
- MacBook鼠标指针乱窜-不受控制问题的解决方法
- 项目适配iOS9遇到的一些问题及解决办法(更新两个小问题)
- HTML中两个tabs导航冲突问题的解决方法
- iOS Xcode7.2开发时使用SBJson解析时 出现野指针的问题解决
- 急需解决------关于在两个窗体之间传递参数的问题
- 急需解决------关于在两个窗体之间传递参数的问题---------解决了
- 【Android】使用 Eclipse 给 APK 签名时遇到的两个问题及解决办法
- 协程设计需要注意的两个小问题及解决
- C指针解决复杂指针解读问题之左右法则
- 指针的对与错 一个问题待解决
- 真正解决FC5、FC6看不到鼠标指针(光标)的问题
- Apache配置--同一台机器上两个应用需要同时占用80端口的问题解决方法