首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。 【说明】 在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4
阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。 【说明】 在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4
admin
2009-02-01
70
问题
阅读以下说明和C语言代码,回答问题1至问题4,将解答填入对应栏内。
【说明】
在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序 manage_device调用4个不同设备驱动程序,但没有用到函数指针变量。
【C语言代码】
/*变量与类型说明*/
#include "stdio.h"
#include "stdlib.h"
extern int sys_status;
extern int Dev_drv1(int arg1, int arg2);
extern int Dev_drv2(int arg1, int arg2);
extern int Dev_drv3(int arg1, int arg2);
extern int Dev_drv4(int arg1, iht arg2);
#define NOERROR 0
type struct {
int _fd;
} TYP_DEV_TAB;
TYP DEV_TAB dev_tab[50]= {101,99, 80, 120,};
/*程序代码*/
void manage_device(int devid, int arg1, int arg2)
{ int place ;
int ret;
for(place=0 ; place<50 ; place++)
if dev_tab [place]. fd == devid) break;
if(place>=50)
printf(" NO DEVICE fd = %d\n ",devid);
switch(dev_tab [place]._fd) {
case 80:
ret = Dev_drv3(int arg1,int arg2);
break;
case 99:
ret = Dev_drv2(int arg1,int arg2);
break;
case 101:
ret = Dev_drv1(int arg1,int arg2);
break;
case 120:
ret = Dev_drv4(int arg1,int arg2);
break;
}
if (ret!=NOERROR)
printf(" DEVICE %d error!\n ", devid);
}
int Dev_drv1(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}
int Dev_drv2(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}
int Dev_drv3(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
}
int Dev_drv4(int arg1,int arg2)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
选项
答案
(1)int (*process)(int arg1,int arg2); (2)int (*ProcAction)(int arg1,int arg2); (3)ProcAction=dev_tab[place].process; (4)ret=ProcAction(arg1,arg2);
解析
本题考查对C语言中函数指针变量的理解和用法。在C语言中,可以用指针变量指向整型变量、字符串、数组、结构变量,也可以指向一个函数,对指针的用法非常灵活,也很容易出错。其中,函数指针变量为较高级的用法。
一个函数在编译时被分配给一个入口地址,这个入口地址就称为函数的指针。可以用一个指针变量指向函数,然后通过该指针变量调用此函数。
本题已将使用变量指向函数编写设备驱动程序的大部分给出,只需在对函数指针变量的声明和引用处,只需给出正确的用法即可。
转载请注明原文地址:https://www.kaotiyun.com/show/hmWZ777K
本试题收录于:
嵌入式系统设计师下午应用技术考试题库软考中级分类
0
嵌入式系统设计师下午应用技术考试
软考中级
相关试题推荐
UDP提供面向______的传输服务。
在UNIX操作系统中,若用户键入的命令参数的个数为1时,执行cat $1命令;若用户键入的命令参数的个数为2时,执行cat>>$2<$1命令。请将下面所示的Shell程序的空缺部分补齐。 case(1)in 1)cat $1;;
标准化是一门综合性学科,其工作内容极为广泛,可渗透到各个领域。标准化工作的特征包括横向综合性、政策性和(16)。
James Martin明确计算机有4类数据环境,独立于应用项目,具有较低的维护成本,应用开发效率较高的是(7)。
在下列机制中,(23)________________是指过程调用和响应调用所需执行的代码在运行时加以结合;而(24)________________是过程调用和响应调用所需执行的代码在编译时加以结合。
某有向图G的邻接表如下图所示,可看出该图中存在弧<v2,v3>,而不存在从顶点v1出发的弧。以下关于图G的叙述中,错误的是()。
通用的高级程序设计语言一般都会提供描述数据、运算、控制和数据传输的语言成分,其中,控制包括顺序、()和循环结构。
阅读下列说明和表,回答问题,将解答填入答题纸的对应栏内。【说明】防火墙类似于我国古代的护城河,可以阻挡敌人的进攻。在网络安全中,防火墙主要用于逻辑隔离外部网络与受保护的内部网络。防火墙通过使用各种安全规则来实现网络的安全策略。防火墙的
数字签名是对以数字形式存储的消息进行某种处理,产生一种类似于传统手书签名功效的信息处理过程。一个数字签名体制通常包括两个部分:__________________。
随机试题
对于最终需要热压灭菌的注射剂或输液,可采用0.65—0.8μm进行末端过滤。()
直流电治疗技术最常采用的操作方法是
A.三仁汤B.茵陈蒿汤C.甘露消毒丹D.茵陈理中汤E.苓桂术甘汤
选择建筑场地时,下列地段属于建筑抗震不利地段的是()
[2005年,第47题]已知柠檬醛的结构式为:判断下列说法不正确的是()。
在炉墙砌筑过程中,要保持内、外墙及四周的进度基本一致,各层砖的灰缝要错开,顺砌错缝为砖长的1/2,横砌错缝为砖长的()。
某中外合资经营企业的投资总额为410万美元,在其注册资本中,中方认缴的出资额为105万美元。根据外商投资企业法律制度的规定,外方认缴的出资额至少为()万美元。
ThomasMalthuspublishedhisEssayonthePrincipleofPopulationalmost200yearsago.Eversincethen,forecastershavebeingw
A、Onabus.B、Inthestation.C、Atameeting.D、Atapostoffice.AM:Doesthisbusgotothetrainstation?W:Yes.Q:Wheredo
Imaginingbeingaskedtospendtwelveorsoyearsofyourlifeinasocietywhich【B1】_____onlyofmembersofyourownsex,how
最新回复
(
0
)