C语言面试深度解析:局部与全局变量、static的作用
需积分: 0 65 浏览量
更新于2024-07-28
收藏 262KB DOC 举报
"C经典面试题"
C语言作为编程的基础,常常在面试中被用来测试候选人的基础知识和理解能力。以下是一些常见的C语言面试题及其解析:
1. 局部变量能否和全局变量重名?
在C语言中,局部变量可以在函数内部声明,并与全局变量具有相同的名称。当在函数内部引用该变量时,会优先使用局部变量,全局变量会被局部变量遮蔽。若要访问全局变量,可以使用作用域解析运算符 `::`。
2. 如何引用一个已定义过的全局变量?
引用全局变量有两种方式:一是通过包含包含该全局变量声明的头文件;二是使用 `extern` 关键字。包含头文件的方式在编译时会检查变量是否存在,如果头文件写错,编译阶段就会报错。而使用 `extern` 关键字仅声明变量的存在,如果链接时未找到变量定义,会在链接阶段报错。
3. 全局变量可否定义在可被多个.C文件包含的头文件中?
是可以的,但为了避免命名冲突,建议在一个C文件中对全局变量进行定义并初始化,其他C文件中使用 `extern` 关键字声明。如果在不同文件中都定义了同名的全局变量且赋值,链接时会报错。
4. 下列代码的输出内容是什么?
```c
#include<stdio.h>
int main(void)
{
int a, b, c, d;
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);
return 0;
}
```
这段代码的输出将是:`b,c,d:10,12,120`
5. static全局变量与普通全局变量的区别:
- 静态全局变量的生命周期始于程序开始,终于程序结束,但其作用域仅限于定义它的源文件。在其他源文件中,它们不可见,避免了全局变量的命名冲突。
- 普通全局变量的作用域覆盖整个程序,所有源文件都可以访问,容易引发命名冲突。
6. static局部变量和普通局部变量的区别:
- 静态局部变量在函数调用结束后不会被销毁,下一次调用时仍保留上次的值,其生命周期跨越多次函数调用。
- 普通局部变量每次函数调用都会重新初始化,仅在当前函数调用中有效。
7. static函数与普通函数的区别:
- 静态函数的作用域仅限于定义它的源文件,其他文件无法直接调用。这增加了封装性,减少了命名冲突。
- 普通函数(非静态函数)可以被程序中的任何部分调用,只要正确包含了相应的头文件。
这些面试题涉及到C语言的关键概念,包括变量的作用域、存储类别以及预处理等,对理解和使用C语言至关重要。掌握这些知识不仅可以帮助在面试中脱颖而出,也是编写可靠C程序的基础。
2012-04-06 上传
2013-05-14 上传
2009-09-27 上传
2023-05-23 上传
点击了解资源详情
点击了解资源详情
dx364797629
- 粉丝: 0
- 资源: 2
最新资源
- 高清艺术文字图标资源,PNG和ICO格式免费下载
- mui框架HTML5应用界面组件使用示例教程
- Vue.js开发利器:chrome-vue-devtools插件解析
- 掌握ElectronBrowserJS:打造跨平台电子应用
- 前端导师教程:构建与部署社交证明页面
- Java多线程与线程安全在断点续传中的实现
- 免Root一键卸载安卓预装应用教程
- 易语言实现高级表格滚动条完美控制技巧
- 超声波测距尺的源码实现
- 数据可视化与交互:构建易用的数据界面
- 实现Discourse外聘回复自动标记的简易插件
- 链表的头插法与尾插法实现及长度计算
- Playwright与Typescript及Mocha集成:自动化UI测试实践指南
- 128x128像素线性工具图标下载集合
- 易语言安装包程序增强版:智能导入与重复库过滤
- 利用AJAX与Spotify API在Google地图中探索世界音乐排行榜