嵌入式软件工程师笔试题 本文档为嵌入式软件工程师笔试题,涵盖了多个与嵌入式软件开发相关的知识点,涉及到预编译、指针、数组、 sizeof 运算符、指针位数等概念。 1. 预编译:预编译是指在编译之前对源代码进行预处理,以生成预编译后的代码。在某些情况下,预编译可以提高编译速度和减少编译时间。总是使用不经常改动的大型代码体和程序由多个模块组成,所有模块都使用一组标准的包含文件和一样的编译选项,在这种情况下,可以将所有包含文件预编译为一个预编译头。 2. 指针:char * const p; //常量指针,p 的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改 const char *p; //和 char const *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"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; 数组变量 str1,str2,str3,str4 都有各自的存储空间,而指针变量 str5,str6,str7,str8 都指向同一个常量区域。因此,比较 str1 和 str2、str3 和 str4 的结果都是 0,而比较 str5 和 str6、str7 和 str8 的结果都是 1。 4. sizeof 运算符:sizeof 运算符用于获取变量或数组的大小,但是在函数中使用 sizeof 可能会有问题。sizeof 只能测出静态数组的大小,无法检测动态分配的或外部数组大小。在函数外的 str 是一个静态定义的数组,因此其大小为 6,因为还有'\0',函数的 str 实际只是一个指向字符串的指针,没有任额外的与数组相关的信息,sizeof 作用于上只将其当指针看,一个指针为 4 个字节,因此返回 4。 5. 指针位数:在 32 位的机器中,指针的位数是 4 个字节的,因为地址总线的位数决定了指针的位数。 6. 数组和指针的操作:main(){ int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1));} 在这个例子中,*(a+1) 等价于 a[1],*(ptr-1) 等价于 a[4],因此执行结果是 2,5。&a+1 不是首地址+1,系统会自动将指针ptr 指向 a[1] 的地址。
剩余20页未读,继续阅读
评论0
最新资源