1 / 64
文档名称:

嵌入式软件工程师笔试题-华为.doc

格式:doc   大小:4,525KB   页数:64页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

嵌入式软件工程师笔试题-华为.doc

上传人:916581885 2021/12/23 文件大小:4.42 MB

下载得到文件列表

嵌入式软件工程师笔试题-华为.doc

文档介绍

文档介绍:嵌入式软件工程师笔试题-华为
LT
- 2 -
(一)
1什么是预编译,何时需要预编译:
答案:
1、总是使用不经常改动的大型代码体。
2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。
2 char * const p      char const * p      const char *p 上述三个有什么区别?
答案:
char * const p; //常量指针,p的值不可以修改
char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和char const *p
3
char str1[] = "abc";
char str2[] = "abc";
const char str3[] = "abc";
const char str4[] = "abc";
const char *str5 = "abc";
- 3 -
const char *str6 = "abc";
char *str7 = "abc";
char *str8 = "abc";
cout < < ( str1 == str2 ) < < endl;
cout < < ( str3 == str4 ) < < endl;
cout < < ( str5 == str6 ) < < endl;
out < < ( str7 == str8 ) < < endl;
结果是:0 0 1 1
str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。
4以下代码中的两个sizeof用法有问题吗?
[C易]
void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
{    for( size_t i=0; i <sizeof(str)/sizeof(str[0]); ++i )       
if( 'a' <=str[i] && str[i] <='z' )           
str[i] -= ('a'-'A' );
}
char str[] = "aBcDe";
- 4 -
- 5 -
{ char a;
char *str=&a;
strcpy(str,"hello");
printf(str);
return 0;
}
答案:没有为str分配内存空间,将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内存读写而导致程序崩溃。
8
Char * s="AAA";
printf("%s",s);
s[0]='B';
printf("%s",s); 有什么错?
答案:"AAA"是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。 cosnt char* s="AAA"; 然后又因为是常量,所以对是s[0]的赋值操作是不合法的。
9写一个“标准”宏,这个宏输入两个参数并返回较小的一个。
- 7 -
答案:.#define Min(X, Y) ((X)>(Y)?(Y):(X))  //结尾没有‘;’
10 嵌入式系统中经常要用到无限循环,你怎么用C编写死循环?
答案:while(1){}或者for(;;)
11 关键字static的作用是什么?
答案:定义静态变量 或 静态函数
12 关键字const有什么含意?
答案:表示常量不可以修改的变量。
13 关键字volatile有什么含意?并举出三个不同的例子?
答案:提示编译器对象的值可能在编译器未监测到的情况下改变。
(1)并行设备的硬件寄存器(如状态寄存器)
(2)中断函数中会访问到的非自动变量
(3)多线程应用中被几个任务共享的变量
- 7 -
14 int (*s[10])(int) 表示的是什么啊?
答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param)的函数。
15 有以下表达式: