嵌入式软件工程师笔试题1.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
嵌入式软件工程师笔试题1.pdf 本资源摘要信息涵盖嵌入式软件工程师笔试的多个知识点,涵盖预编译、指针、数组、sizeof操作符、指针运算等多个领域。 1. 预编译: 预编译是指在编译之前对源代码进行的预处理操作,目的是为了提高编译效率和减少编译时间。在嵌入式系统中,预编译经常用于处理大型代码体和多模块程序中的一致性问题。 2. 指针: 指针是C语言中的一种数据类型,用于存储内存地址。char * const p; // 常量指针,p 的值不可以修改 char const * p ;//指向常量的指针,指向的常量值不可以改 const char *p ; //和 char const *p 这三个指针的区别在于指针的常量性和指向的常量性。char * const p 是一个常量指针,指针的值不能修改,但指针所指向的值可以修改。char const * p 是一个指向常量的指针,指针所指向的值不能修改,但指针的值可以修改。const char *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 是指针,它们指向相同的常量区域。 4. sizeof操作符: sizeof操作符用于获取变量或表达式的大小。在函数内部,sizeof操作符无法检测动态分配的或外部数组的大小。char str[] = "aBcDe"; UpperCase( str ); cout << str << endl; 在这里,sizeof(str)返回的是数组的大小,但是在函数内部,sizeof(str)只返回指针的大小,因为函数内部的str只是一个指针。 5. 指针的位数: 在32位机器上,指针的位数为4字节。这是因为32位机器的地址总线宽度为32位,因此指针的位数也为32位。 6. 指针运算: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); printf("%d,%d",*(a+1),*(ptr-1)); 在这里,&a+1 并不是将首地址加1,而是将首地址偏移一个数组的大小。ptr 实际上是 &(a[5]),因此ptr-1 将指向 a[4]。因此输出结果为2,5。 7. 内存分配: int main() { char a; char *str=&a; strcpy(str,"hello"); printf(str); return 0; } 这段代码的问题是没有为str分配内存空间,将导致异常。str 应该是一个数组或动态分配的内存空间,而不是一个字符变量的地址。
剩余20页未读,继续阅读
- 粉丝: 25
- 资源: 7802
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助