【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(8)
【C语言面试题详解】掌握嵌入式开发岗位笔试题中的基础C语言知识(8)
一般来说,嵌入式开发岗位,学习C语言是必须的,以下基础C语言的知识考查,希望不会难倒你。本期知识点:赋值语句相关知识。
1 写在前面
C语言的编程能力在嵌入式开发中,还是非常重要的。为了帮助刚入门C语言编程的童鞋尽快掌握其核心基础知识,我会从本期开始输出若干期经典的笔试原题解析,力求从原题的角度深入剖析每一个知识点。
2 本期知识点
本期给大家带来的基础知识点是:赋值语句
-
赋值语句的定义:C语言中,赋值语句是通过 = 来进行的,它的基本形式有以下几种:
- 变量 = 常量;
- 变量 = 变量;
- 常量 = 常量;
-
赋值语句的嵌套使用:赋值语句的嵌套使用,其实就是我们常说的 连等式,形如:
变量1 = 变量2 = 变量3 = … = 变量n = 常量
-
赋值语句的几个约束:
- 常量是不能被二次赋值的;
- 对数组元素的赋值,可能没有语法错误,但是有可能会造成数组访问越界;
- 对指针的赋值,可能没有语法错误,但是有可能因访问非法内存而程序奔溃。
3 几道笔试原题
3.1 考察点:赋值语句的分类
题目原题:
假如有以下几个变量和常量的定义,下列赋值语句错误的是()?
int a = 3;
const int b = 4;
const int *c;
int const *d;
A a = b;
B c = &b;
C d = &b;
D b = c;
题目考查的知识点:C语言的赋值语句的分类
题目解析:
A选项正确:它是一个正常的赋值语句,将b的值赋值给a;
B选项正确:由变量定义可知,c是一个指针,它指向一个const int类型的地址;所以将c赋值为b变量(const int类型)的地址是完全没问题的;
C选项正确:由变量定义可知,d是一个指针,它指向一个int const 类型的地址;在C语言中,int const 类型就等同于const int类型;因此将d赋值为b变量(const int类型)的地址是完全没问题的;由此可知,其实c、d两个变量的定义是等效的。
D选项错误:这是一个非法的赋值语句,因为b变量是一个const类型的常量,它的值只能在初始化定义的时候被赋值,在运行阶段是不能被赋值的。
题目答案:D
3.2 考察点:赋值语句的语法
题目原题:
对于以下变量定义,正确的赋值是()
int *p[3], a[3];
A p=a
B *p=a[0]
C p=&a[0]
D p[0]=&a[0]
题目考查的知识点:C语言的变量的定义和赋值语句的使用。
题目解析:
我们先分析两个变量p和a的定义:
- p它是一个指针数组,数组中的每一个元素都是一个指针,该指针指向一个int类型的地址;
- a是一个数组,数组中的每一个元素都是一个int类型的变量;
A选项错误:由于p是一个指针数组,将p指针指向a一个一维数组是不行;除非a数组是二维数组; B选项错误:由于p是一个指针数组,所以直接使用*p对其赋值是不行的; C选项错误:由于p是一个指针数组,将其指向一个一维数组的成员变量的地址也是不行的; D选项正确:由于p是一个指针数组,所以p[0]是该数组的第一个元素,它可以指向一个一维数组;在C语言中,a是一个一维数组,a数组的地址等同于a数组第一个元素的首地址,即a[0];所以p[0] = &a[0]是成立的。
题目答案:D
3.3 考察点:赋值语句的使用
题目原题:
下列使用赋值语句定义变量的语句中,错误的是()?
A int a=5,b,c;
B int a=b=c=d=e=5;
C int a=5,b=5,c=5;
D int a=5,b=5,c;
题目考查的知识点:
C语言中,连等式的使用不能使用变量定义;变量定义的时候可以使用赋值语句对变量进行赋初始值。
题目解析:
A 选项正确,它定义3个变量,其中a变量的初值为5,b/c变量没有初始值;
B 选项错误, 连等式赋初值,不能用于变量定义中,因为在定义的时候b/c/d/e变量还没被定义;编译会报语法错误;
C 选项正确,这个是B选项的正确写法,效果就是a/b/c3个变量都定义了,且初始值都是5;
D 选项正确,与A/C选项类似,它是允许的;定义的节骨偶就是a/b的初始值都是5,而c变量没有初始值。
题目答案: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)