C语言求职笔试精华题集:填空与问答解析
5星 · 超过95%的资源 需积分: 25 38 浏览量
更新于2024-09-18
1
收藏 102KB DOC 举报
在寻找C语言相关职位的求职过程中,遇到的笔试题目涵盖了C语言基础知识、数据结构以及编程规范等多个方面。以下是详细解析:
一、填空题(16分)
1. **float x与“零值”比较的if语句:**
如果要检查浮点数`x`是否等于零,可以使用`if (x == 0.0f)`。因为`float`类型的零值是`0.0f`。
2. **不能做switch()的参数类型是:** 字符串或指针到非整型。C语言中的`switch`语句只能用于整型、枚举类型或字符类型。
3. **变量存储和作用域:**
- 局部变量存在于**函数栈**中,生命周期与函数相同,一般在函数调用时分配内存,结束时自动释放。
- 全局变量存在于**静态存储区**,在整个程序执行期间都存在。
- 动态申请的数据存在于**堆**,程序员手动分配和释放。
4. **`strlen(a)`结果:**
`strlen(a)`返回字符串`a`中字符的数量,不包括结束符`\0`,因此结果是9(假设`a`最多包含9个字符)。
5. **变量存储类型表格:**
- 对于每种存储类别,填充对应属性,如存储区、生存期和作用域等。
6. **指针类型解释:**
- `int *p[3];` 是一个指向整型数组的指针,数组有3个元素。
- `int (*p)[3];` 是一个指向整型数组的指针,每个元素都是一个长度为3的数组。
- `int *p(int);` 是一个返回指向整型的指针的函数。
- `int (*p)(int);` 是一个接受一个整型参数并返回整型值的函数指针。
- `int*(*p)(int);` 是一个函数,返回一个接受整型参数并返回指向整型的指针。
- `int(*p[3])(int);` 和 `int*(*p[3])(int);` 类似,但一个是函数指针数组,另一个是函数返回指向函数指针。
7. **联合体(union)和结构体(struct)的sizeof:**
`sizeof(structdata)`返回`struct data`的大小,`sizeof(max)`返回`DATE`类型的大小。由于`max`是`DATE`类型的全局变量,所以`sizeof(max)`可能是`DATE`的大小。整个表达式的结果将是这两个值之和。
二、问答题(30分)
1. **局部变量与全局变量的区别:**
- 局部变量在函数内部定义,仅在该函数范围内有效。
- 全局变量在整个源文件中可见,可以在任何地方访问。
- 在包含头文件的多个.C文件中,全局变量通常不推荐定义在头文件中,防止命名冲突。
2. **静态变量的区别:**
- `static`全局变量只初始化一次,且其生命周期贯穿整个程序。
- `static`局部变量只在首次进入函数时初始化,之后保持不变。
- `static`函数是内部静态,只在首次调用时编译链接,之后不会再次编译。
3. **野指针原因:**
- 指针未正确初始化。
- 动态分配的内存没有正确释放,导致悬空指针。
- 越界访问数组或对象。
- 指针类型转换错误。
4. **无限循环:**
`for(;1;)` 是一个无限循环,条件始终为真,导致循环无法跳出,除非通过break语句干预。它的意思是持续不断地执行循环体内的代码,直到遇到break。
5. **do...while和while...do的区别:**
- `do...while`先执行一次循环体,然后判断条件,如果条件满足则继续循环,至少执行一次。
- `while...do`则是先判断条件,再执行循环体。如果条件不满足,循环体可能不会被执行。
6. **顺序存储和链表:**
- 顺序存储是线性数据结构,元素连续存储,访问速度快,插入和删除效率低。
- 链表则元素分散存储,通过指针链接,插入和删除高效,但随机访问速度较慢。
这些知识点有助于求职者理解C语言基础和面试官可能关注的要点,提高笔试表现。
287 浏览量
122 浏览量
203 浏览量
124 浏览量
332 浏览量
269 浏览量