【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(5)
【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(5)
一般来说,嵌入式开发岗位,学习C语言是必须的,以下基础C语言的知识考查,希望不会难倒你。本期知识点:字符串相关知识。
1 写在前面
C语言的编程能力在嵌入式开发中,还是非常重要的。为了帮助刚入门C语言编程的童鞋尽快掌握其核心基础知识,我会从本期开始输出若干期经典的笔试原题解析,力求从原题的角度深入剖析每一个知识点。
2 本期知识点
本期给大家带来的基础知识点是:字符串
- 字符串的定义:使用char基础数据类型定义一个字符串,比如
char *p = "123456";或者char p[] = "123456"; - 字符串的长度:使用strlen对字符串进行求长度,该长度值不包括字符串末尾的\0
- 字符串的约束:一个有效的字符串必须以\0字符结束
3 几道笔试原题
3.1 考察点:字符串的定义
题目原题:
下列定义语句中,不是有效的字符串定义的()?
A char *p = "123456";
B char p[] = "123456";
C char p[10] = "123456";
D char *p[] = "123456";
题目考查的知识点:C语言的字符串定义
题目解析:
A选项正确:因为它是有效的定义方式;
B选项正确:因为它是有效的定义方式;
C选项正确:因为它是有效的定义方式;它B选项的区别是,它指定了p数组的大小,而B选项中却没有;
D选项错误:因为它定义的一个字符串数组,而不是一个字符串,且这样的写法是会报语法错误的;正确字符串的数组应加上 {}
char *p[] = { “123456” };
题目答案:C
3.2 考察点:字符串的长度
题目原题:
char s[] = "a+b=12\n";
strlen(s) 的返回值为( )。
A 8
B 12
C 7
D 6
题目考查的知识点:C语言的字符串长度的求法
C语言中,使用strlen对字符串进行求长度,其返回值不包含字符串末尾的\0
题目解析:
跟进strlen的定义和功能,s这字符串的长度应该是7,值得注意的是\n其实是一个转移字符,它占1个字节的长度.
题目答案:C
3.3 考察点:字符串与数组的关系
题目原题:
假设有一个字符串的定义如下:
char s[] = "1234567890";
那么,下列表达式的值为()?
*(s + 2) + *(s) + s[7] = ( )?
A 155
B 156
C 157
D 158
题目考查的知识点:
C语言中,字符串和字符数组是互通的,所以对字符串取偏移求值,即对数据取偏移求值。
字符的ASCII值是整型数,可进行加减运算,比如 字符 ‘1’ 的 ASCII值为 0x31 = 49
题目解析:
*(s + 2) = s[2] = ‘3’ = 0x33 = 51
*s = s[0] = ‘1’ = 0x31 = 49
*(s + 7) = s[7] = ‘8’ = 0x38 = 56
因此,三者相加等于 51 + 49 + 56 = 156
题目答案:B
4 更多分享
架构师李肯(全网同名),一个专注于嵌入式IoT领域的架构师。有着近10年的嵌入式一线开发经验,深耕IoT领域多年,熟知IoT领域的业务发展,深度掌握IoT领域的相关技术栈,包括但不限于主流RTOS内核的实现及其移植、硬件驱动移植开发、网络通讯协议开发、编译构建原理及其实现、底层汇编及编译原理、编译优化及代码重构、主流IoT云平台的对接、嵌入式IoT系统的架构设计等等。拥有多项IoT领域的发明专利,热衷于技术分享,有多年撰写技术博客的经验积累,连续多月获得RT-Thread官方技术社区原创技术博文优秀奖,荣获CSDN博客专家、CSDN物联网领域优质创作者、2021年度CSDN&RT-Thread技术社区之星、2022年RT-Thread全球技术大会讲师、RT-Thread官方嵌入式开源社区认证专家、RT-Thread 2021年度论坛之星TOP4、华为云云享专家(嵌入式物联网架构设计师)等荣誉。坚信【知识改变命运,技术改变世界】!
- 点赞
- 收藏
- 关注作者
评论(0)