25 个最常见的 C 面试问题和答案 [对于应届生]
已发表: 2020-12-18C 是一种功能强大的通用编程语言,支持过程式、命令式和结构化范式。 它用于为各种计算机架构(PLC、嵌入式系统等)开发操作系统、数据库和应用软件。 C 是一种优秀的初学者友好语言,具有简单的学习曲线。
任何有志从事软件开发事业的人都必须掌握 C 的基础知识。一旦你了解了 C 编程语言的精髓,你就可以准备好迎接 C 面试了!
在这篇博客中,我们将带您了解一些最常见的 C 面试问题。 通常,工作面试从测试您对该主题(在本例中为 C 编程语言)的基本知识开始,然后逐渐探索您在该领域的实践技能。
所以,事不宜迟,让我们来看看 25 个最常见的 C 面试问题!
C 面试问答
- C语言的核心特点是什么?
C编程语言是:
- 中级——C 结合了低级和高级语言的最佳特性,创建了一种中级、精炼的编程语言。
- 结构化——C 是一种结构化语言,这意味着 C 程序被分割成多个部分。
- 可移植性——一旦你用 C 语言编写了一个程序,你就可以在任何机器上运行它,只需极少或无需改动。
- 快速——C 使用各种数据类型和运算符,使其非常快速和高效。
- 可扩展——C 具有高度可扩展性,因为它可以无缝地适应新特性。
- 内存管理——C 有一个内置的内存功能,可以节省内存并提高 C 程序的效率。
- C 支持哪些数据类型?
C有四类数据类型:

- 基本数据类型
- 派生数据类型
- 枚举数据类型
- 无效数据类型
- 用 C 语言解释“悬空指针变量”。
在 C 编程中,指针指示现有变量的内存位置或地址。 但是,如果该变量被删除并且指针指向相同的内存位置,则称为悬空指针变量。
- 什么是“指针上的指针”?
“指针上的指针”是指一个指针变量,它保存另一个指针变量的地址。 本质上,指针解引用两次以指示指定指针变量中包含的数据。
- 定义一个“数组”。
数组是一种数据结构,以有组织的方式包含相同数据类型的多个元素。 数组通常有三种类型:一维、二维和三维。
- 什么是静态变量? 为什么在 C 中使用静态变量?
静态变量是由“静态”关键字声明的变量。 静态变量在多个函数调用之间保留其值。
静态变量作为所有方法共享的公共值,在内存堆中只初始化一次,以减少内存使用。 虽然静态变量最初初始化为零,但如果您更新变量的值,则将分配更新后的值。
- 定义变量的“范围”。
变量的范围是指声明变量的代码(函数)部分。 在 C 编程语言中,所有标识符都是静态或词法范围的。
- 什么是动态内存分配?
动态内存分配是在运行期间为 C 程序及其变量分配内存的过程。 当 malloc()、calloc() 和 realloc() 分配内存时,free() 函数释放已使用的内存空间。
阅读:SQL 面试问答
- 解释 calloc() 和 malloc() 函数之间的区别。
在 C 中,calloc() 和 malloc() 都是从堆区域(动态内存)分配内存的内存分配函数。 两个内存分配函数之间的主要区别在于 calloc() 加载所有分配的内存位置,值为 0 而 malloc() 不加载。
- 解释“静态内存分配”。
与在运行时分配内存的动态内存分配不同,静态内存分配在编译期间分配内存。 静态内存分配不允许您在执行 C 程序时增加内存分配。 您可以使用堆栈/堆实现静态内存,并使用“静态”关键字分配内存。 一般来说,静态内存分配比动态内存分配需要更多的内存空间来存储变量。
- 命名一些 C 代币?
Token 是一个标识符。 它通常是 C 程序中的最小单元。 常量、字符串、关键字、运算符、标识符和特殊字符是编写 C 程序时使用的一些 C 标记。
- 如果没有 main() 函数,C 代码会编译或执行吗?
在没有 main() 函数的情况下,C 程序将编译而不是执行,因为 main() 函数是运行任何 C 程序所必需的。
- 定义“嵌套结构”。
当函数的元素或数据成员包含另一个结构的数据成员时,将创建嵌套结构。
- 区分实际参数和形式参数。
实际参数从主函数发送到细分函数,声明为细分函数的参数称为形式参数。

- 什么是预处理器指令?
预处理器指令是一个内置的预定义函数,它作为编译器的指令在编译过程开始之前执行特定任务。 因此,预处理器指令总是在执行 C 程序之前执行。
- 定义“命令行参数”。
在 C 程序执行期间传递给 main() 函数的参数称为命令行参数。 第一个参数表示参数的数量,由操作系统自动更新。 第二个参数(字符指针数组)始终包含字符串作为参数。
- 如何为函数分配参数?
有两种方法可以将参数分配给函数:
- 按值调用 – 仅当您不想使用形式参数更改实际参数时才选择此方法,因此您只需将值的副本作为参数发送给函数。
- 通过引用调用——在这种方法中,您发送实际参数的地址以使用形式参数修改它们。
查看:全栈开发人员面试问题
- 什么是 C 中的“联合”?
在 C 中,Union 是一种用户定义的数据类型,可以在一个单元中存储多种数据类型。 它只包含最大成员的内存,而不是所有成员的总内存。 由于联合为联合的所有成员分配共享空间,因此您一次只能访问联合中的一个变量。
- 解释“递归”。
递归是指函数调用自身,调用自身的函数称为递归函数。 递归函数分两个阶段发生:
- 缠绕阶段——当递归函数调用自身并满足所需条件时,缠绕阶段结束。
- 展开阶段——一旦到达卷绕阶段,展开阶段就会通过将控制权返回给原始调用来启动。
- 如何在 C 中声明一个函数?
您可以像这样在 C 中声明一个函数:
return_type function_name(形参列表)
{
功能体;
}
- sprintf() 函数有什么作用?
sprintf() 函数用于打印字符串。 它获取字符串中的字符总数。 此函数将数据传输到缓冲区,因此它不会在屏幕上打印输出。 sprintf() 函数的语法是:
int sprintf ( char * str, const char * 格式, ... );
- 区分 getch() 和 getche() 函数?
在 C 程序中,getch() 函数从关键字中读取单个字符。 由于它确实使用任何缓冲区,因此它不会在屏幕上显示您输入的数据。 相反,虽然 getche() 函数也从关键字中读取单个字符,但它会在屏幕上显示数据。
- 什么是“Rvalue”和“Ivalue”?
Rvalue 是位于赋值运算符右侧的表达式。 它被分配给位于赋值运算符上的 Ivalue。 左值只能引用变量而不是常量。
- 在 C 中命名不同的存储类说明符。
在 C 中,有四个存储说明符:

- 汽车
- 静止的
- 登记
- 外部
- 用“”和<>声明头文件有什么区别吗?
如果使用“”声明头文件,编译器会在当前工作目录中搜索该头文件,如果在该目录中找不到该文件,则它会探查其他位置以找到该头文件。 但是,如果使用 < > 声明头文件,编译器会搜索内置路径后面的文件。
查看: 15个面试技巧,让你在求职面试中脱颖而出
报名参加世界顶尖大学的软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
结论
所以,你去吧:25 C面试问题和答案,帮助你准备下一次工作面试。 尽管这些问题只触及了 C 编程的表面,但希望它们能让您了解您在 C 面试中可以期待什么!
如果您有兴趣了解有关全栈软件开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
