面试真题 | c语⾔技术点
c语⾔技术点
1. 描述一下 gcc 的编译过程?
-
gcc 编译过程主要分为 4 个阶段:预处理,编译,汇编,链接:
- 预处理:头文件包含,弘替换,条件编译,删除注释;
- 编译:主要进行词法,语法,语义分析等,检查无误后将预处理好的文件汇编成汇编文件;
- 汇编:将汇编文件转化成二进制目标文件;
- 链接:将项目中的各个二进制文件+所需的库+启动代码链接成可执行文件。
2. 内存的最小单位以及内存的最小计量单位分别是
- 内存的最小储存单位为 二进制位
- 内存的最小计量单位 字节
3. #include<> 与 #include“” 的区别
- include<> 到 系统指定目录 寻找头文件
- include“” 先到 项目所在目录 寻找头文件,如何没有找到再到系统指定的目录下寻找
4. 描述一下变量的命名规则
- 变量名由字母,数值,下划线组成,但不能以数值开头
5. 变量的声明与定义
- 声明变量 不需要 建立储存空间
- 变量的定义 需要 建立储存空间
6.谈谈 c 语言中有符号和无符号的区别
- 有符号:数据的最高位为符号位,0 表示 正数,1 表示 负数
- 数据的最高位不是符号位,而是数据的一部份
7. 谈谈计算机中补码的意义
- 统一了零的编码
- 将符号位与其他位统一处理
- 将减法运算转化成加法运算
8. 谈谈数组的特点
- 同一个数组所有的成员都是相同的数据类型,同时所有成员在内存中的地址是连续的。
9. 数组的分类
- 数据的主要分类是:静态数组,动态数组两类。
- 静态数组:类似 int arr[5]; 在程序运行时就确定了数组的大小,运行过程不能更改数组的大小;
- 动态数组:主要是在堆栈中申请的空间,数组的大小是在程序运行过程中确定,可以更改数组的大小。
10. 描述一下一维数组的不初始化,部分初始化,完全初始化的不同点
- 不初始化:如果是局部变量,数组元素的内容随机;如果是全局数组,数组的元素内容为 0
- 部分初始化:未被初始化的部分自动补 0
- 完全初始化:如果一个数组全部初始化,可以省略元素的个数,数组的大小有初始化的个数确定
11. 谈谈数组名作为类型,作为地址,对数组名取地址的区别
- 数组名作为类型:代表的是整个数组的大小
- 数组名作地址:代表是数组首元素的地址
- 对数组名取地址:代表的是数组的首地址
12. 谈谈你对二维数组在物理上以及逻辑上的数组维度理解
- 二维数组在逻辑上是二维的,在物理上是一维的
13. 描述一下函数的定义与函数的声明的区别
- 函数定义:是指对函数功能的确立,包括指定函数名,函数类型,形参及其类型,函数体等。它是一个完整的,独立的函数单位。
- 函数的声明:是指函数的名字,函数类型以及形参的个数,类型和顺序(不包括函数体)通知编译系统,以便在对包含函数调用的语句进行编译是,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一样)
14. 描述一个指针与指针变量的区别
- 指针:内存中每一个字节都会分配一个 32 位或 64 位的编号,这个编号就是地址,而指针就是内存单元的编号。
- 指针变量:本质是变量,只是该变量存放的是空间的地址编码。
15. 描述一下 32 位或是 64
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
ARM/Linux嵌入式真题 文章被收录于专栏
让实战与真题助你offer满天飞!!! 每周更新!!! 励志做最全ARM/Linux嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!