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

上传人:rrsccc 文档编号:9029072 上传时间:2021-01-30 格式:DOCX 页数:6 大小:16.66KB
返回 下载 相关 举报
嵌入式软件工程师笔试题华为.docx_第1页
第1页 / 共6页
嵌入式软件工程师笔试题华为.docx_第2页
第2页 / 共6页
嵌入式软件工程师笔试题华为.docx_第3页
第3页 / 共6页
嵌入式软件工程师笔试题华为.docx_第4页
第4页 / 共6页
嵌入式软件工程师笔试题华为.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《嵌入式软件工程师笔试题华为.docx》由会员分享,可在线阅读,更多相关《嵌入式软件工程师笔试题华为.docx(6页珍藏版)》请在三一文库上搜索。

1、嵌入式软件工程师笔试题华为资料仅供参考(一)1 什么是预编译,何时需要预编译:答案:、总是使用不经常改动的大型代码体。、程序由多个模块组成, 所有模块都使用一组标准的包含文件和相同的编译选项。 在这种情况下,能够将所有包含文件预编译为一个预编译头。2 char * const pchar const * pconst char*p 上述三个有什么区别?答案:char * const p; / 常量指针, p 的值不能够修改 char const * p ;/指向常量的指针,指向的常量值不能够改 const char *p ; /和 char const *p3char str1 = abc;c

2、har str2 = abc;const char str3 = abc;const char str4 = abc;const char *str5 = abc;资料仅供参考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 1str1,str2,str3,str4 是数组变量,它们有各自的内存空间;

3、而 str5,str6,str7,str8 是指针,它们指向相同的常量区域。4 以下代码中的两个sizeof 用法有问题吗?C 易void UpperCase( char str)/ 将str 中的小写字母转换成大写字母 for( size_t i=0; i sizeof(str)/sizeof(str0);+i )if( a =stri & stri =z )stri -= (a-A );char str = aBcDe;资料仅供参考coutstr字 符 长 度 为 :sizeof(str)/sizeof(str0) endl;UpperCase( str );cout str endl;答

4、案:函数内的 sizeof 有问题。根据语法, sizeof 如用于数组, 只能测出静态数组的大小, 无法检测动态分配的或外部数组大小。函数外的 str 是一个静态定义的数组,因此其大小为 6,因为还有 0 ,函数内的 str 实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息, 因此sizeof 作用于上只将其当指针看,一个指针为 4 个字节,因此返回 4。5 一个 32 位的机器 ,该机器的指针是多少位答案:指针是多少位只要看地址总线的位数就行了 。 80386 以后的机子都是 32 的数据总线。因此指针的位数就是 4 个字节了。6 main()int a5=1,2,3,4,5;

5、资料仅供参考int *ptr=(int *)(&a+1);printf(%d,%d,*(a+1),*(ptr-1);答案: 25分析: *(a+1 )就是 a1 ,*(ptr-1) 就是 a4,执行结果是 2,5 。&a+1 不是首地址 +1,系统会认为加一个 a 数组的偏移,是偏移了一个数组的大小(本例是 5 个 int ) int *ptr=(int *)(&a+1); 则ptr实际是 &(a5), 也就是a+5 原因如下:&a是数组指针,其类型为int(*)5;而指针加1要根据指针类型加上一定的值, 不同类型的指针 +1 之后增加的大小不同 a 是长度为 5 的 int 数组指针,因此要

6、加 5*sizeof(int) 因此 ptr 实际是a5 可是 prt 与(&a+1) 类型是不一样的 (这点很重要 ) 因此 prt-1 只会减去 sizeof(int*) 。 a,&a 的地址是一样的,但意思不一样, a 是数组首地址,也就是 a0 的地址, &a 是对象(数组)首地址,a+1 是数组下一元素的地址, 即 a1,&a+1是下一个对象的地址,即a5.7 请问以下代码有什么问题:intmain()资料仅供参考char a;char *str=&a;strcpy(str,hello);printf(str);return 0;答案:没有为 str 分配内存空间, 将会发生异常,问题出在将一个字符串复制进一个字符变量指针所指地址。 虽然能够正确输出结果, 但因为越界进行内存读写而导致程序崩溃 。8Char* s=AAA;printf(%s,s);s0=B;printf(%s,s);有什么错?答案: AAA 是字符串常量。 s 是指针,指向这个字符串常量,因此声明 s 的时候就有问题。 cosnt char* s=AAA; 然后又因为是常量,因此对是 s0的赋值操作是不合法的。9 写一个 “标准 ”宏,这个宏输入两个参数并返回

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1