在进行基于ARM核的嵌入式系统软件开发时,调用如下函数: int do_something(int arg1,void *arg2,char arg3,int *arg4) 这四个参数通过什么方式从调用程序传入被调函数?
第1题:
有以下函数
void prt(char ch,int n)
{int i;
for(i=1,i<=n;i++)
printf(i%6 !=O?“%c”:“%c\n”,ch);
}
执行调用语句prt(’*’,24);后,函数共输出 行*号。
第2题:
写出下列代码的输出内容
#include
int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1)(int in);
typedef int(FUNC2)(int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
第3题:
考虑函数原型void fuc(int x,int y=5,char z='*'),下面函数调用不合法的是( )。
A.fuc(3);
B.fuc(3,6);
C.fuc(3,'*');
D.fuc(3,6,'*');
第4题:
对下列程序的描述正确的是( )。 #include <iostream> using namespace std; int fuc(int,int); int main(){ cout<<fuc(1,10)<<endl; return 0; } int fuc(int x,int y){ return x*x+y*y; }
A.该函数的定义和调用方式都是错误的
B.该函数的定义和调用方式都是正确的
C.该函数调用方式正确,但函数定义错误
D.函数定义正确,但函数调用方式错误
第5题:
若有以下程序 #include<stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) {printf(“%d\n”,n);} 则以下叙述中不正确的是
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他的其他函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息;提示对f函数重复说明
D.函数f无返回值,所以可用void将其类型定义为无值型
第6题:
若有以下程序#include <stdio.h>void f(int n);main(){ void f(int n); f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:对f函数重复说明D.函数f无返回值,所以,可用void将其类型定义为无返回值型
第7题:
若有以下调用语句,则不正确的 fun 函数的首部是( )。 void main() { int a[50],n; fun(n,&a[9]); }
A.void fun(int m,int x[])
B.void fun(int s,int h[])
C.void fun(intp,int * s)
D.void fun(int n,int a)
第8题:
已知C++中一个函数的原型为void f(int &x, int &y),调用这个函数时,要把实在参数传递给形式参数,应该采用的参数传递方式是(30)。
A.传值调用
B.引用调用
C.复制恢复
D.传名调用
第9题:
阅读以下说明和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)
{
/*局部变量声明,略*/
/*驱动程序代码,略*/
请用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);
}
第10题:
在进行基于ARM核的嵌入式系统软件开发时,调用如下函数: int do_something(int arg1,void *arg2,char arg3,int *arg4)这四个参数通过什么方式从调用程序传入被调函数?
第11题:
若有以下程序 #include
第12题:
fun(5)
fun(5,8)
fun(6,“##”)
fun(0,0,“==”)
第13题:
对下列程序段的描述正确的是( )。 #include<iostream.h> int fun(int,int); void main() { cout<<fun(1,2)<<endl; } int fun(int x,int y) { return x+y; }
A.该函数定义正确,但函数调用方式错误
B.该函数调用方式正确,但函数定义错误
C.该函数定义和调用方式都正确
D.该函数定义和调用方式都错误
第14题:
若有以下程序: #include<stdio.h> void f(int n); main() { void f(int n); f(5); } void f(int n) { printf("%d\n",n);}则以下叙述中不正确的是( )。
A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数f
C.对于以上程序,编译时系统会提示出错信息:对f函数重复说明
D.函数f无返回值,所以可用void将其类型定义为无返回值型
第15题:
若有以下程序#include <stdio.h>void f(int n);main(){ void f(int n); f(5);}void f(int n){ printf("%d\n",n);}则以下叙述中不正确的是A.若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正确调用函数fC.对于以上程序,编译时系统会提示出错信息:对f函数重复说明D.函数f无返回值,所以,可用void将其类型定义为无返回值型
第16题:
若有以下程序 #include <stdio.h> void f(int n); main() ( void f(int n); f(5); } void f(int n) { printf("%d\n",n); } 则以下叙述中不正确的是
A.若只在主函数中对函数f进行说明,则只能在土函数中正确调用函数f
B.若在主函数前对函数f进行说明,则在主函数和其后的其他函数中都可以正碗调用函数f
C.对于以上程序,编译时系统会提示出错信息:提示对f函数重复况明
D.函数f无返回值,所以可用void将其类型定义为无值型
第17题:
调用函数bbb后,输出是什么
void ccc(int x)
{
char szTemp[10] = "";
x = 2;
sprintf(szTemp, "%d,", x);
afxDump << szTemp;
if(x = 3)
{
int x = 4;
sprintf(szTemp, "%d,", x);
afxDump << szTemp;
}
sprintf(szTemp, "%d,", x);
afxDump << szTemp;
}
void bbb()
{
char szTemp[10] = "";
int x = 7;
ccc(x);
sprintf(szTemp, "%d,", x);
afxDump << szTemp;
}
第18题:
在下面的函数声明中,______ 是“void BC (int a,int b);”的重载函数。
A.int BC (int a,int b)
B.void BC(int a,char b)
C.float BC (int a,int b,int c=0)
D.void BC (int a,int b=0)
第19题:
若有以下程序段: void x(int n); void main() { void x(int n); x(5); } void x(int n){ cout<<n: } 则以下叙述不正确的是 ______。
A.若只在子函数中对函数x进行声明,则只能在主数中正确调用函数x
B.若只在子函数前面对函数x进行声明,则其后的所有函数中都可以正确调用函数x
C.对于以上程序,编译时系统会提示出错信息:提示对x函数重复声明
D.函数x无返回值,所以可用void定义x的函数类型
第20题:
对下列程序的描述中,正确的是( )。 #include<iostream> using namespace std; int Fun(int,int); int main() { cout<<Fun(5,50)<<end1; return 0; } int Fun(int x,int y) { return x*x+y*y; }
A.该函数定义正确,但函数调用方式错误
B.该函数调用方式正确,但函数定义错误
C.该函数的定义和调用方式都是正确的
D.该函数的定义和调用方式都是错误的
第21题:
(9)有以下函数
void prt(char ch,int n)
{ int i;
for(i=1;i<=n;i++)
printf(i%6!=0?"%c":"%c\n",ch);
}
执行调用语句prt('*',24);后,函数共输出了 【9】 行*号。
第22题:
下面的函数声明中,()是“void BC(int a, int b);”的重载函数
第23题:
第24题:
int BC(int x, int y);
void BC(int a, char b);
float AA(int a, char b);
int BC(int a, int b=0);