40年2021大C语言面试问题


这是常见的C编程面试问题列表。 这些是基本的C面试问题,将在面试过程中为您提供帮助。

目录

1. C编程语言的功能是什么?

以下是C编程语言的功能:

  • 简单:它遵循一种结构化的方法,该方法允许将程序拆分或分解为较小的部分
  • 快速:更快的编译和执行
  • 铝合金提手:允许在任何机器上执行C程序,而无需进行修改或进行很小的修改
  • 中级: 它结合了低级和高级语言的功能。
  • 内存管理: 内置内存
  • 扩展:可以采用新功能。

2. C中有哪些不同的数据类型?

  • int:整数值
  • float:浮点值,它是一个带有小数部分的数字
  • double:双精度浮点值
  • 字符:单个字符
  • void:特殊类型,没有任何价值

3. print()和scanf()函数的用途是什么?

- print() 函数打印诸如整数,字符,浮点数,字符串等的值

- scanf() 函数接受或检索用户的输入。

4.全局变量和局部变量之间有什么区别?

全局变量局部变量
它是在函数或块外部声明的变量它是在函数或块内声明的变量
范围在整个计划之内范围在指定的功能或块内
它可以通过任何语句访问它只能由声明了变量的块或函数中的语句访问
编译器决定将变量存储在何处局部变量存储在堆栈中
全局变量的生存期随着程序的终止而结束局部变量的生存期以函数exit结束

5.什么是静态变量?

用关键字声明的变量 static 是静态变量。 静态变量的值会在整个程序中保留,并且对于所有方法调用都是通用的。 它仅初始化一次,因此节省了大量内存。

6.按值调用和按引用调用有什么区别?

按价值致电通过参考电话
当我们将参数作为值传递时,原始值不会被修改当我们传递参数作为参考时,原始值也会被修改
实际参数和形式参数存储在单独的位置实际参数和形式参数存储在相同的存储位置
按值调用参数是安全的,因为未修改值通过引用参数调用是不安全的,因为可以更新值
传递原始参数的副本原始参数的地址被传递。

7.什么是C中的NULL指针?

A 空指针 是没有任何地址的指针,这意味着它只有0的值。

8.什么是悬空指针?

悬空指针是这样一种指针,其指向的内存空间将被删除。 这意味着当指针指向某个内存而另一个指针将其删除时,第一个指针称为悬空指针。

9.什么是指向指针的指针?

当一个指针指向另一个指针的地址时,我们称其为指向指针概念的指针。 它也称为指针链。

10. C语言中的指针是什么?

每次我们创建变量时, 分配一些内存。 该存储器指的是地址号。 保留该地址号的变量是一个指针。 换句话说,指针是一个变量,用于存储值的地址,从而使性能大大提高。

11. C中有哪些不同的存储类说明符?

不同的存储类说明符是寄存器,自动,静态和外部

12.什么是内存泄漏?

内存泄漏是一种情况,当我们忘记使用后删除或释放内存。

13.何时在C中使用指针?

在以下情况下,我们使用指针:

  • 检索变量的地址
  • 通过引用实现
  • 通过大型结构

14.什么是调试?

调试是识别和消除错误的过程。 当出现编译错误时,我们将无法执行代码。

15.陈述是否正确:strValue =“ C面试问题”?

不,这是不正确的,因为我们不能使用C编程语言中的equalto运算符(=)将值赋给变量。 我们需要使用下面给出的strcpy()方法。

strcpy(myValue,"C interview questions");

16.什么是先进先出?

FIFO代表先进先出。 这主要用在队列中 数据结构,首先检索我们首先插入的元素的位置。 它用于存储和检索操作。

17. =和==符号有什么区别?

equalto =是一种数学运算符,用于将值分配给变量,而equalto关系运算符==用于比较两个值。

18.编写一个C程序,以打印不带分号的“ C编程问题”。

void main() {
     if(printf("C programming questions")) {
     }
}

19.动态内存分配中使用了哪些功能?

动态内存分配在运行时分配内存,这意味着在执行过程中我们可以增加或减少内存空间。 以下是支持的功能 动态内存分配:

  1. malloc():它不初始化内存并且包含垃圾值
  2. calloc(): 它使用值0初始化内存。
  3. realloc(): 它重新分配内存以占据新的大小。
  4. 自由(): 释放记忆

20. malloc和calloc有什么区别?

分配卡洛克
分配多个内存块分配单个内存块
它包含一个参数它包含两个参数
默认存储垃圾值它存储0作为默认初始化

21.什么是C编程语言中的auto关键字?

我们创建的每个局部变量都是自动或自动变量事件,尽管我们没有明确提及使用 auto 关键词。 局部变量始终在函数内声明,并且如果我们不使用任何值对其进行初始化,则默认情况下将包含垃圾值。

22. sprintf()函数的用途是什么?

- sprint() 函数将返回字符串中的字符数,并且不会在控制台中显示该值。 而是将其存储在缓冲区中。

23.是否可以在没有main()函数的情况下编译C程序?

是的,我们可以编译但不能执行它。 要执行,我们可以使用#define语句

24. getch()和getche()有什么区别?

- getch() 读取单个字符并且不在输出屏幕上打印该值,而 getche() 方法读取单个字符并将其打印在输出屏幕中。

25. C编程中的保留字是什么?

保留字是具有独特含义或功能的特殊字。 它存在于C库中,我们不能将它们用作变量名。 示例:无效,返回等

26. pre-increment(++ a)和post-increment(a ++)运算符有什么区别?

前缀运算符 增量 首先将值赋值,然后将值赋给变量。 使用变量后,后缀运算符会增加该值。

27.什么是换行符转义序列?

换行符转义序列表示在控制台中打印输出时的换行符。 我们可以使用“ \ n”符号来实现。

28.我们可以将值32768存储为int数据类型吗?

不,我们不能,因为整数值的范围是-32768到32767。相反,我们可以将其用作long int。

29.什么是C令牌?

令牌是C编程语言中的标识符。 它包含标识符,关键字,文字,常量,运算符和 特殊的角色.

30.什么是C语言中的toupper()方法

toupper()方法将值转换为 小写到大写 情况。

31.用<>和“”声明头文件有什么区别?

当我们在头文件中使用<>时,它将在内置路径中搜索头文件,而当我们使用“”时,它将在当前工作目录中搜索头文件。

32.什么是类型转换?

类型转换是从一种转换的过程 数据类型 到另一个。 例如,我们可以通过类型转换将值从float显式转换为整数。

33.编写一个C程序,无需使用第三个变量即可交换数字。

#include <stdio.h>

int main()
{
   int a = 5;
   int b = 10;
   printf("Values before swapping: a=%d b=%d", a,b);
   a = a + b;
   b = a - b;
   a = a - b;
   printf("Values after swapping: a=%d b=%d", a,b);

    return 0;
}
Values before swapping: a=5 b=10                                                                                                              
Values after swapping: a=10 b=5

34. while(0)和while(1)有什么区别?

while(0) 总是返回false,这意味着它永远不会在while循环内执行代码,而 while(1) 始终返回true,并表示一个无限循环,该循环在循环内连续执行代码且不会退出。

35.什么是命令行参数?

命令行参数允许用户通过传递main方法中提到的参数来从控制台提供输入。

36.什么是静态变量?

静态变量是在代码中共享相同值的变量。 我们可以使用 static 表示静态变量的关键字。

37.什么是递归?

递归 是再次自行调用同一函数的过程。

38. ANSI的完整形式是什么?

ANSI代表美国国家标准协会

39.什么是函数指针?

拥有对函数的引用的指针就是对函数的指针。

40.哪个关键字执行无条件分支?

我们可以使用 goto 关键字以执行无条件分支。