面试真题 | 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嵌入式面试必考必会的题库。 励志讲清每一个知识点,找到每个问题最好的答案。 让你学懂,掌握,融会贯通。 因为技术知识工作中也会用到,所以踏实学习哦!!!

全部评论
小伙伴们认真看哦,有不懂的可以私聊!
点赞 回复 分享
发布于 07-21 09:11 四川
😍
点赞 回复 分享
发布于 07-21 09:11 四川
满帮集团
校招火热招聘中
官网直投

相关推荐

08-12 20:32
已编辑
温州理工学院 视觉设计师
//鲨鱼辣椒:most beautiful girl. many problem, add v say.
点赞 评论 收藏
分享
1 3 评论
分享
牛客网
牛客企业服务