Lang:简体中文

c语言面试题目及答案

日期:2025-09-08 / 来源:面试宝典

掌握要点,轻松应对c语言面试

在c语言的面试中,经常会遇到一些有代表性的题目。下面就为大家详细介绍几类常见的面试题目及答案。

基础语法类题目

这类题目主要考察对c语言基础语法的掌握程度。例如:请说明c语言中指针和数组的区别。指针是一个变量,它存储的是另一个变量的地址;而数组是一组相同类型元素的集合。比如下面的代码:

int arr[5] = {1, 2, 3, 4, 5}; int *ptr = arr; 这里arr是数组名,代表数组首元素的地址,ptr是指针变量,指向数组的首元素。指针可以进行加减运算来访问不同的内存地址,而数组名在多数情况下是常量指针,不能进行自增自减操作。

内存管理类题目

内存管理是c语言面试中的重点。常见问题如:简述malloc和calloc的区别。malloc函数用于动态分配指定大小的内存块,返回一个指向该内存块的指针,例如:

int *p = (int *)malloc(5 * sizeof(int)); 它只分配内存,不会对内存进行初始化。而calloc函数在分配内存的同时会将内存初始化为0,如:int *q = (int *)calloc(5, sizeof(int)); 这里calloc的第一个参数是元素个数,第二个参数是每个元素的大小。

函数与递归类题目

函数和递归的考察也很常见。比如:编写一个递归函数来计算斐波那契数列。斐波那契数列的定义是:f(0)=0,f(1)=1, f(n)=f(n - 1)+f(n - 2)(n ≥ 2,n ∈ n*)。下面是实现代码:

int fibonacci(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } 递归函数通过不断调用自身来解决问题,但要注意递归深度,避免栈溢出。

结构体与联合体类题目

结构体和联合体也是面试中可能涉及的内容。例如:说明结构体和联合体的区别。结构体中的每个成员都有自己独立的内存空间,各个成员可以同时存在并存储不同的值。而联合体的所有成员共享同一块内存空间,同一时间只能有一个成员有效。看下面的例子:

struct student { char name[20]; int age; }; union data { int i; float f; }; 结构体student的name和age有各自的内存,而联合体data的i和f共享内存。

文件操作类题目

文件操作在实际开发中很重要。常见问题如:如何在c语言中打开一个文件并读取其内容。可以使用fopen函数打开文件,fgets函数读取文件内容。示例代码如下:

file *fp; char buffer[100]; fp = fopen("test.txt", "r"); if (fp != null) { while (fgets(buffer, sizeof(buffer), fp) != null) { printf("%s", buffer); } fclose(fp); } 这里先以只读模式打开文件,然后逐行读取文件内容并输出,最后关闭文件。

以下为推荐内容

微信二维码