物联网嵌入式学习的内容繁杂,很多小伙伴在准备物联网面试的时候,面对众多知识点无从下手。小千在此为大家整理了物联网面试题集锦—C++语言篇,希望能够帮助大家顺利通关!
C++语言篇
1、谈谈你对命名空间的理解
namespace 是⼀个关键字:随着⼯程量的增加,变量命名上不可避免的会出现重名,防止名称冲突。
(在两个不同的命名空间中,即使2个变量名相同,也是2个不同的变量),在实际工作中,基本都使用标准命名空间。
命名空间只能全局范围内定义,不能定义在函数内部。
命名空间内,可以存放 变量、函数、结构体、类 ;也可以嵌套其他的命名空。
命名空间可以匿名(但⼀般不这样使⽤),类似静态全局变量。
命名空间是可以起别名.
2、谈谈指针和引⽤的区别
引用是给变量起别名,内部实现是指针常量(int* const ref = &a),其可以简单的理解为本体指
针存放的是变量的地址
引用的本质是指针常量,其指向不可修改,而指针可以改变指向
引用创建的同时必须初始化,指针创建的时候可以不必初始化
引用不能为空,指针可以为 NULL
“引用变量 ref”的内存单元保存的是“被引用变量 a”的地址 sizeof(引用) = 指向变量的大小 sizeof(指针) = 指针本身的大小
引用使用的时候无需解引用,指针需要解引用
指针和引用“自增/自减运算”意义不⼀样
在同等需求下,函数传参,引用可以将⼀级指针
3、谈谈你对内联函数的理解
(1)宏函数的缺陷:
需要加括号实现,以保证优先级的完整性。
即使加了括号,有些情况依然有缺陷。
(2)在普通函数前面加上inline关键字使其成为内联函数;
(3)内联函数本身是一个函数,宏函数不是;
(4)内联函数具有普通函数所有的行为 唯一不同之处在于 :内联函数会在适当的地方向宏函数一样展开,可以以空间换时间,内联函数即可以避免宏函数的缺陷,又可以避免普通函数入栈时的时间浪费;
(5)在任何类内定义的函数自动成为内联函数;
(6)下列情况,普通函数即使指定为内联函数,编译器也可能考虑不按内联编译 a、存在任何形式的循环语句 b、存在过多的条件判断语句c、函数体过于庞⼤ d、对函数进⾏取址操作;
(7)a、内联仅仅只是给编译器⼀个建议,编译器不⼀定会接受这种建议;b、如果你没有将函数声明为内联函数,那么编译器也可能将此函数做内联编译(⼀个好的编译器将会内联小的、简单的函数)因此,不用刻意使用内联函数,可以交给编译器去自行处理。
更多关于“物联网培训”的问题,欢迎咨询千锋教育在线名师。千锋教育多年办学,课程大纲紧跟企业需求,更科学更严谨,每年培养泛IT人才近2万人。不论你是零基础还是想提升,都可以找到适合的班型,千锋教育随时欢迎你来试听。