新版C语言面试题面试题库(含答案)
1、C语言是什么?
C语言是一种中级和过程编程语言。 过程编程语言也称为结构化编程语言,是一种将大型程序分解为较小模块的技术,每个模块都使用结构化代码。 这种技术可以最大限度地减少错误和误解。C语言被认为是其他编程语言的基础,这就是为什么它被称为母语。可以通过以下方式定义:母语系统编程语言面向过程的编程语言结构化编程语言中级编程语言
2、为什么把C语言称为母语?
C语言被称为母语,因为大多数编译器和 JVM 都是用 C 语言编写的。 大多数在 C 语言之后开发的语言都大量借鉴了它,如 C、Python、Rust、javascript 等。它引入了这些语言中使用的数组、函数、文件处理等新的核心概念。 
3、为什么 C 被称为中级编程语言?
C语言被称为中级编程语言,因为它绑定了低级和高级编程语言。 我们可以使用 C 语言作为系统编程来开发操作系统,也可以使用应用程序编程来生成菜单驱动的客户驱动计费系统。
4、C语言的创始人是谁?
丹尼斯•里奇(Dennis Ritchie)
5、C语言是什么时候开发出来的?
C语言是 1972 年在 AT&T 的贝尔实验室开发的。
6、C语言的特点是什么?
•    简单:C语言是一门简单的语言,因为它遵循结构化方法,即,程序被分成几部分
•    可移植性:C语言具有高度可移植性,这意味着一旦编写了程序,就可以在任何机器上运行,只需很少或无需修改。
•    中级:C语言是一种中级编程语言,因为它结合了低级语言和高级语言的特性。
•    结构化:C语言是一种结构化语言,因为 C 程序被分成多个部分。
•    速度快:C语言非常快,因为它使用了一组强大的数据类型和运算符。
•    内存管理:C语言提供了一个内置的内存功能,可以节省内存并提高我们程序的效率。
•    可扩展:C语言是一种可扩展的语言,因为它可以在未来采用新的特性。
7、C语言printf() 和 scanf() 函数有什么作用?
printf:printf 函数用于将整数、字符、浮点数和字符串值打印到屏幕上。以下是格式说明符:%d:它是用于打印整数值的格式说明符。%s:它是用于打印字符串的格式说明符。%c:它是用于显示字符值的格式说明符。%f:它是用于显示浮点值的格式说明符。scanf:scanf 函数用于接收用户的输入。
8、C中的局部变量和全局变量有什么区别?
以下是局部变量和全局变量之间的区别: 比较项目 局部变量 全局变量 声明 在函数或块中声明的变量称为局部变量。 在函数或块之外声明的变量称为全局变量。 范围 变量的范围在声明它们的函数中可用。 变量的范围在整个程序中都是可用的。 访问 变量只能被声明它们的函数内的那些语句访问。 整个程序中的任何语句都可以访问变量。 生命周期 变量生命周期是在进入功能块时创建并在退出时销毁。 在程序执行之前,变量的生命周期一直
存在。 存储 除非指定,否则变量存储在堆栈中。
9、C语言中的静态变量有什么用?
以下是静态变量的用法:声明为静态的变量称为静态变量。 静态变量在多个函数调用之间保留其值。使用静态变量是因为静态变量的作用域在整个程序中都是可用的。 因此可以在程序的任何位置访问静态变量。静态变量最初初始化为零。 如果我们更新变量的值,则分配更新的值。静态变量用作所有方法共享的公共值。静态变量在内存堆中只初始化一次,以减少内存使用。
10、C语言中的函数有什么作用?
C语言函数的用途是:C语言函数用于避免在程序中一次又一次地重写相同的代码。C语言函数可以从程序的任何位置调用任意次数。当一个程序被划分为函数时,那么程序的任何部分都可以很容易地被跟踪。C语言函数提供了可重用性概念,即将大任务分解为小任务,从而使 C 程序更易于理解。
1.    11、C语言中按值调用和按引用调用有什么区别?
以下是按值调用和按引用调用之间的区别: 按值调用 按引用调用 说明 当值的副本传递给函数时,原始值不会被修改。 当将值的副本传递给函数时,会修改原始值。 内存位置 实际参数和形式参数在不同的内存位置创建。 实际参数和形式参数在同一内存位置创建。 安全性 在这种情况下,实际参数仍然是安全的,因为它们不能被修改。 在这种情况下,实际参数不可靠,因为它们已被修改。 参数 实际参数的副本被传递给形式参数。 实际参数的地址被传递给它们各自的形式参数。
12、C语言中的递归是什么?
当一个函数调用自己时,这个过程称为递归。 调用自身的函数称为递归函数。递归函数分为两个阶段: 绕组阶段:当递归函数调用自身时,当达到条件时此阶段结束。放卷阶段:当条件达到时展开阶段开始,控制返回到原来的调用。 递归示例 #include <stdio.h> int calculate_fact(int); int main() { int n=5,f; f=calculate_fact(n); // calling a function printf(
13、C语言中的数组是什么?
数组是一组相似类型的元素。 它有一个连续的内存位置。 它使代码优化,易于遍历和易于
排序。 数组的大小和类型在声明后不能更改。 数组有两种类型:一维数组:一维数组是一个依次存储元素的数组。语法 - data_type array_name[size]; 多维数组:多维数组是包含多个数组的数组。
14、C语言中的指针是什么?
指针是一个变量,它引用一个值的地址。 它使代码优化并提高性能。 每当在程序中声明变量时,系统都会为变量分配一些内存。 内存包含一些地址编号。 保存此地址号的变量称为指针变量。 实例: data_type *p; 上面的语法中, p 是一个指针变量,它保存给定数据类型值的地址号。
15、C语言中的 NULL 指针是什么?
不引用任何值地址但为 NULL 的指针称为 NULL 指针。 当我们将0值分配给任何类型的指针时,它就会变成 NULL 指针。
16、C语言中的远指针是什么?
可以访问 RAM 的所有 16 个段(整个驻留内存)的指针称为远指针。 远指针是一个 32 位指针,它在给定节中获取内存之外的信息。
1.    17、C语言中的悬空指针是什么?
如果一个指针指向任何内存位置,但同时另一个指针删除了第一个指针占用的内存,而第一个指针仍然指向该内存位置,则第一个指针将被称为悬空指针。 这个问题被称为悬空指针问题。当一个对象被删除而不修改指针的值时,就会出现悬空指针。 指针指向释放的内存。通过一个例子来看看 - #include<stdio.h> void main() { int *ptr = malloc(constant value); //allocating a memory space. 
18、C语言中指针的指针是什么?
指针的指针概念:一个指针指的是另一个指针的地址。 指向指针的指针是一个指针链。 通常,指针包含变量的地址。 指向指针的指针包含第一个指针的地址。
19、静态内存分配是什么?
静态内存分配是: 在静态内存分配的情况下,内存是在编译时分配的,执行程序时不能增加内存。 它在数组中使用。静态内存中变量的生命周期就是程序的生命周期。静态内存是使用 static 关键字分配的。静态内存是使用堆栈或堆实现的。需要指针才能访问静态内存中的变量。
20、动态内存分配是什么?
动态内存分配是: 在动态内存分配的情况下,内存是在运行时分配的,内存可以在执行程序时增加。 它用于链表。使用 malloc() 或 calloc() 函数需要在运行时分配内存。内存的分配或释放是在程序执行时完成的。访问内存不需要动态指针。动态内存是使用数据段实现的。存储变量所需的内存空间更少。 示例代码- int *p= malloc(sizeof(int)*10); 上面的示例在运行时分配内存。 
21、C语言动态内存分配有哪些函数?
C语言动态内存分配的函数有: 1. malloc() malloc() 函数用于在程序执行期间分配内存。它不初始化内存,但携带垃圾值。
22、malloc() 和 calloc() 有什么区别?
malloc() 和 calloc() 的区别如下: 对比项 calloc() malloc() 描述 malloc()函数分配了一个请求的内存块。 calloc()函数分配多个请求的内存块。 初始化 它将内存的内容初始化为零。 它不初始化内存的内容,所以它带有垃圾值。 参数的数量 它包括两个参数。 它只由一个参数组成。 返回值 它返回一个指向所分配内存的指针。 它返回一个指向已分配内存的指针。 
23、C语言中结构是什么?
C语言中结构是: 结构是一种用户定义的数据类型,允许在一个单元中存储多种类型的数据。它占据了所有成员的内存之和。结构成员只能通过结构变量来访问。结构变量访问同一结构,但为每个变量分配的内存将是不同的。编程语言有哪几种类
24、C语言联合体是什么?
C语言联合体是一种用户定义的数据类型,允许在一个单元中存储多种类型的数据。然而,它并不占用所有成员的内存之和。它只保存最大成员的内存。在union中,一次只能访
问一个变量,因为它为 union 的所有成员分配了一个公共空间。
25、C语言中的 auto 关键字是什么?
在C语言中,每个函数的局部变量都被称为自动(auto)变量。在函数块内部声明的变量被称为局部变量。本地变量也被称为自动变量。在变量的数据类型前使用auto关键字是可选的。如果本地变量中没有存储任何值,那么它就由一个垃圾值组成。 
26、sprintf()函数的作用是什么?
sprintf()代表 “字符串打印(string print)”。sprintf()函数并不在控制台屏幕上打印输出。它将数据传输到缓冲区。它返回字符串中存在的总字符数。
27、可以编译一个没有main()函数的程序吗?
是的,我们可以编译,但不能执行。但是,如果使用#define,就可以在不使用main()函数的情况下编译和运行一个C语言程序。
28、什么是令牌(Token)?
Token是一个标识符。它可以是常量、关键字、字符串字面等。一个令牌是程序中最小的独立单元。C语言有以下标记。 标识符 - 标识符指的是变量的名称。关键词 - 关键词是指由编译器解释的预定义词。常量 - 常量是固定值,在程序执行过程中不能改变。操作符 - 操作符是一个执行特定操作的符号。特殊字符 - 字母和数字外的所有字符都被视为特殊字符。
29、什么是命令行参数?
执行程序时传递给main()函数的参数被称为命令行参数。
30、ANSI的缩写是什么?
ANSI是 “American National Standard Institute”的缩写,中文翻译为:美国国家标准协会 。它是一个维护广泛的学科的组织,包括摄影胶片、计算机语言、数据编码、机械零件、安全和其他。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。