本帖最后由 lee_st 于 2017-11-21 15:34 编辑
一.编程基础
1. 有如下CAT_s结构体定义,回答:
1) 在一台64位的机器上,使用32位编译,Garfield 变量占用多少内存空间?64位编译又是如何?(总分5分)
2) 使用32位编译情况下,给出一种判断所使用机器大小端的方法。(总分5分) struct CAT_s{
intld;
char Color;
unsigned short Age;
char *Name;
void(*Jump)(void);
}Garfield;
2. 描述下面XXX 这个宏的作用。(总分10分)
#define offsetof(TYPE,MEMBER)((size_t)&((TYPE*)0)->MEMBER)
#define XXX(ptr,type,member({
consttypeof(((type*)0)->member)*__mptr=(ptr);
(type*)(char*)__mptr – offsetof(type,member));})
3. 简述C 函数:1) 参数如何传递(__cdecl调用方式);2) 返回值如何传递;3) 调用后如何 返回到调用前的下一条指令执行。(总分10分)
4. 在一个多任务嵌入式系统中,有一个CPU 可直接寻址的32位寄存器REGn ,地址为 0x1F000010,编写一个安全的函数,将寄存器REGn 的指定位反转(要求保持其他bit 的值不变)。(总分10分)
5. 有10000个正整数,每个数的取值范围均在1到1000之间,变成找出从小到大排在第 3400(从0开始算起)的那个数,将此数的值返回,要求不使用排序实现。(总分10分)
3
|
|
|
|
|
|
头像被屏蔽
· 2018-4-18 08:56:50
|
|
|
|
|
|
|
|