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