swap(&x, &y); //有效果
void swap(int *a, int *b) {
int t;
t = *a;
*a = *b;
*b = t;
}
14、假如test指针的值为0x12345678,则表达式test_p[1]的指针地址值是()
char test[8] = { 0x01,0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
int *test_p = (int*)test;
A.0x12345678
B.0x1234567C
C.0x12345679
D.0x1234567A
答案:B
15、下面的C语言程序运行后,n的值是()
int n = 0;
int f = 17;
n = 4 * f % 3 + 1;
A.3
B.9
C.2
D.0
答案:A
16、下面那个操作可以将flag的bit[2](假定bit[31...0]对应flag的32位)置0()
A.flag|=4
B.flag^=4
C.flag&=~4
D.flag|=~4
答案:C
17、下面程序的运行结果为()
#define TEST(a,b) a*b
int main()
{
int a = TEST(1 + 2, 3);
printf("result= %dn", a);
return 0;
}
A.2
B.3
C.7
D.9
答案:C
18、对于堆、栈、队列描述错误的是()
A.队列空间缓冲由进程申请,栈的空间缓冲由OS分配
B.堆总是一棵完全二叉树
C.堆的数据类型和队列相似
D.队列先进先出,栈后进先出
答案:B
19、以下对字符数组test赋值方式错误的是()
A.char test[10]; strcpy(test,"test");
B.char test[10]; test="test";
C.char test[]={'t','e','s','t'};
D.char test[10]={'t','e','s','t'};
答案:B
20、可用于中断下半段处理的处理机制有()
A.tasklet
B.工作队列
C.软中断
D.双向链表
答案:ABC
解答:上半部是不能中断的,仅仅是响应中断;下半部是可以中断的 。对于适时要求高的,必须放在上半部 。下半部的实现主要是通过软中断、tasklet、工作队列来实现的 。上半部的功能是响应中断 。当中断发生时,它就把设备驱动程序中中断处理例程的下半部挂到设备的下半部执行队列中去,然后继续等待新的中断到来 。这样一来,上半部的执行速度就会很快,它就可以接受更多它负责的设备所产生的中断了 。上半部之所以快,是因为它是完全屏蔽中断的,如果它没有执行完,其他中断就不能及时地处理,只能等到这个中断处理程序执行完毕以后 。所以要尽可能多的对设备产生的中断进行服务和处理,中断处理程序就一定要快;下半部的功能是处理比较复杂的过程 。下半部和上半部最大的区别是可中断,而上半部却不可中断 。下半部几乎完成了中断处理程序所有的事情,因为上半部只是将下半部排到了它们所负责的设备中断的处理队列中去,然后就不做其它的处理了 。下半部所负责的工作一般是查看设备以获得产生中断的事件信息,并根据这些信息(一般通过读设备上的寄存器得来)进行相应的处理 。下半部是可中断的,所以在运行期间,如果其它设备产生了中断,这个下半部可以暂时的中断掉,等到那个设备的上半部运行完了,再回头运行这个下半部 。
21、有函数fun()定义如下,在main函数调用fun函数执行过程中,使用了哪些函数参数传递方式()
int fun(int a[], short *ptr, int &c){
...
}
A.数组传递
B.指针传递
C.引用传递
D.值传递
答案-:BC
22、关于链表,描述正确的选项有()
A.在运行时可以动态添加
B.物理空间不连续,空间开销更大
C.查找元素不需要顺序查找
D.可在任意节点位置插入元素
答案:ABD
23、对运算符优先级的判断,正确的是()
A.取余运算符%高于加运算符+
B.逻辑与运算符&&高于赋值运算符=
C.数组下标[]高于自增运算符++
D.左移运算符<<高于大于运算符>
答案:ABCD
24、能在Linux内核态执行的是() 。
A.缺页中断
B.时钟中断
C.命令解释
D.进程调度
答案:ABD
解答:缺页中断和时钟中断都属于中断,在内核态执行 。进程调度属于系统调用,在内核态执行,命令解释程序属于命令接口,在用户态执行 。
简答题1、Linux驱动连接硬件与应用,根据你对驱动加载的理解,回答如下问题:
(1)insmod和modprobe都可以用来加载驱动模块,请描述这两者的差异 。
(2)请给出三种以上Linux驱动模块加载失败的可能原因 。
解答:modprobe和insmod类似,都是用来动态加载驱动模块的,区别在于modprobe可以解决加载模块时的依赖关系,它是通过/lib/modules/#uname -r/modules.dep(.bb)文件来查找依赖关系的;而insmod不能解决依赖问题;也就是说,如果你确定你要加载的驱动模块不依赖其他驱动模块的话,既可以insmod也可以modprobe,当然insmod可以在任何目录下执行,更方便一些 。而如果你要加载的驱动模块还依赖其他ko驱动模块的话,就只能将模块拷贝到上述的特定目录,depmod后再modprobe 。
推荐阅读
- 海蛤墨鱼汤的做法
- 木瓜海带乌鸡汤的做法
- 海米珍珠笋的做法
- 铁板海皇豆腐的做法
- 蒜香海蜈蚣的做法
- 茶的功效与作用禁忌,胖大海的禁忌与功效作用
- 上海人最爱的十大零食是什么?
- 海外版抖音TikTok调整最长视频达10分钟
- 茶叶的N种死法,茶叶含氨基酸有什么功效
- 茶叶稀土含量超标,扬州茶叶被检出稀土超标