在C语言面试中,面试官常常会考察候选人的基础知识和对语言特性的理解。以下是一些C语言的关键知识点,基于提供的面试题进行详细解释: 1. **局部变量与全局变量**: - **局部变量**:在函数内部定义的变量,只在其所在的作用域内有效。当函数结束,局部变量会被销毁。如果局部变量与全局变量同名,局部变量会屏蔽全局变量。 - **全局变量**:在整个程序中都有效。在不同源文件中,如果要使用全局变量,需使用`extern`关键字声明,或者通过包含头文件的方式引入。 2. **`extern`关键字**: - `extern`用于在需要使用全局变量的文件中声明全局变量,表明该变量在其他文件中已定义。 3. **静态全局变量(static global variable)**: - 只在其定义的源文件中可见,限制了全局变量的作用域,避免命名冲突。 4. **`for( ;1 ;)`与`while(1)`**: - 这两个循环结构等价,表示无限循环,因为条件始终为真。 5. **`do…while`与`while…do`的区别**: - `do…while`先执行循环体,后检查条件,至少执行一次。 - `while…do`先检查条件,条件满足才执行循环体,可能不执行。 6. **代码输出**: ```c int a,b,c,d; a=10; // a = 10 b=a++; // b = 10, a = 11 c=++a; // c = 12, a = 12 d=10*a++; // d = 120, a = 13 printf("b,c,d:%d,%d,%d", b,c,d); ``` 输出:`b,c,d:10,12,120` 7. **静态局部变量(static local variable)**: - 只初始化一次,且在函数每次调用时保持上次的值。 - 与普通局部变量相比,静态局部变量在函数调用结束后不会被销毁,下次调用时仍保留上次的值。 8. **内存区域**: - **局部变量**通常存放在栈(stack)中,随着函数调用和返回自动管理。 - **全局变量**和**静态变量**存放在静态区(静态存储区),程序运行时初始化一次,生命周期直到程序结束。 - **动态申请的数据**(如`malloc`或`calloc`分配的内存)存放在堆(heap)中,需要程序员手动管理释放。 9. **数据类型和大小**: - `DATE`是一个联合体(union),其中`int k[5]`占用最大空间,通常是20字节(假设`int`是4字节)。 - `struct data`包含一个`int`(4字节),一个`DATE`(20字节),和一个`double`(8字节),总共32字节。 - `sizeof(struct date)`加上`sizeof(max)`(一个`DATE`对象)的结果是52字节。 10. **队列与栈**: - **队列(Queue)**遵循先进先出(FIFO,First In First Out)原则,元素在队尾入队,在队头出队。 - **栈(Stack)**遵循后进先出(LIFO,Last In First Out)原则,元素最后加入的最先被移除。 11. **代码输出**: ```c int inc(int i) { return ++i; } int main() { int x = 5; printf("%d\n", inc(x) + inc(x)); return 0; } ``` 这段代码会递增`x`两次并输出结果,因此输出是`12`。 以上内容涵盖了C语言中关于变量、内存管理、循环结构、数据类型大小、函数和数据结构的基础知识点,这些都是C语言面试中常见的问题。理解和掌握这些概念对于C语言编程至关重要。
剩余14页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助