请用C语言的函数指针变量,对manage_device函数进行改造,完成下面C语言代码中的(1)、(2)、(3)和(4)处的变量说明或语句,将解答填入对应栏内。 【C语言代码】 /*变量与类型说明*/ #include "stdio.h"

admin2009-02-01  48

问题 请用C语言的函数指针变量,对manage_device函数进行改造,完成下面C语言代码中的(1)、(2)、(3)和(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, iht arg2);
   extern int Dev_drv3(int arg1, int arg2);
   extern int Dev_drv4(int arg1, int arg2);
   #define  NOERROR  0
   typedef struct {
   int  _fd;
    (1) 函数指针变量说明;/* 变量名用process */
   } TYP_DEV_TAB;
   TYP_DEV_TAB  dev_tab[50]= {{101, Dev_drv1},{99, Dev_drv2},
   {80, Dev_drv3},{120, Dev_dry4},};
   /* 程序 */
   void  manage_device(int devid, int arg1, int arg2)
   {  iht  place ;
      int  ret;
    (2) 函数指针变量说明;/*局部变量,变量名用ProcAction */
       for(place=0 ; place<50 ; place++)   {
          if(dev_tab [place]._fd == devid)  {
    (3) 语句1;/* 变量名胜ProcAction, 得到具体函数的入口地址 */
              break;
          }
      }
      if(place>=50)
        printf("NO DEVICE  fd = %d\n",devid);
        (4) 语句2;
      if(ret!=NOERROR)
        printf("DEVICE  %d  error!", devid);
   }
函数的参数存放在什么地址空间中?说明其作用范围。将答案填入对应栏内。

选项

答案[*]

解析 本题考查对栈空间基础知识。函数的参数存放在进程或任务的栈空间中,在调用函数时,给函数的各参数在栈空间分配地址;函数返回时退出栈空间。所以,函数参数在函数被调用时起作用。
转载请注明原文地址:https://jikaoti.com/ti/qgI7FFFM
0

最新回复(0)