联系方式

咨询热线:400-998-6158

点击此处免费预约试听课程»

常见问题
学习资讯
师资介绍
学习资讯

就业专题分享之嵌入式工程师面试题库精选

1、变量的声明和定义有什么区别?

为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但只能在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。 

说明:很多时候一个变量,只是声明,不分配内存空间,知道具体使用时才初始化,分配内存空间,如外部变量。

2、sizeof和strlen的区别

sizeof是一个操作符,strlen是库函数。 
sizeof的参数可以是数据的类型,也可以是变量,而strlen只能以结尾为‘\0‘的字符串作参数。 
编译器在编译时就计算出了sizeof的结果。而strlen函数*在运行时才能计算出来。并且sizeof计算的是数据类型占内存的大小,而strlen计算的是字符串实际的长度。 
数组做sizeof的参数不退化,传递给strlen就退化为指针了。 
注意:有些是操作符看起来像是函数,而有些函数名看起来又像操作符,这类容易混淆的名称一定要加以区分,否则遇到数组名这类特殊数据类型作参数时就很容易出错。较容易混淆为函数的操作符就是sizeof。 
说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。

3、栈和堆的区别

栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

堆(操作系统):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。


4、全局变量、局部变量、静态全局变量、静态局部变量的区别和引用方式?

初始化的全局变量在.data段,可以外部文本加extern引用;
未初始化的全局变量在.bss段,可以外部文本加extern引用;
静态全局变量区别是不能在外部文件引用;
局部变量在运行时,栈区分配空间;
静态局部变量在静态区分配空间,函数调用后内存不释放;


5、内存的分配方式有哪三种,请简单介绍一下。

内存分配有三种:静态存储区、堆区和栈区。他们的功能不同,他们使用方式也就不同。
1. 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。
2. 栈区:在执行函数时,函数(包括main函数)内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(任何变量都处于站区,例如int a[] = {1, 2},变量a处于栈区。数组的内容也存在于栈区。)
3. 堆区:亦称动态内存分配。程序在运行的时候用malloc或new申请任意大小的内存,程序员自己负责在适当的时候用free或delete释放内存。动态内存的生存期可以由我们决定,如果我们不释放内存,程序将在较后才释放掉动态内存。 但是,良好的编程习惯是:如果某动态内存不再使用,需要将其释放掉,并立即将指针置位NULL,防止产生野指针。

学校联系方式

更多培训课程,学习资讯,课程优惠等学校信息,请进入 广州黄埔区嵌入式培训广州番禺区单片机培训机构 网站详细了解,免费咨询电话:400-998-6158

相关课程