
C/C++学习笔记:scanf返回值与static、extern解析
下载需积分: 9 | 65KB |
更新于2024-07-19
| 195 浏览量 | 举报
收藏
"C/C++ 学习笔记,包含有关`scanf`返回值、`static`与`extern`的解释"
在C/C++编程语言中,`scanf`函数是用于从标准输入读取数据的重要函数。它按照指定的格式字符串解析输入,并将数据存储到对应的变量中。`scanf`的返回值是成功读取并转换的项目数,例如,在以下代码中:
```c
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
```
如果用户输入了"1 2 a",`scanf`将返回2,因为两个整数(1和2)成功被读取和转换,而字母'a'由于不符合%d格式而未被读取。当输入不匹配时,错误的输入会被留在输入缓冲区,等待下一次读取。对于`%d`格式说明符,空格和回车会被忽略,但`%c`会接收它们。
接下来,我们讨论`static`和`extern`这两个关键字。`static`关键字用于声明变量或函数,它的主要特性是:
1. 静态变量的生命周期贯穿于整个程序执行期间,即使函数结束,其值也会保留。这意味着,如果在函数内部声明一个静态变量,每次调用该函数时,该变量都会保留上次调用结束时的值。例如:
```c
int fun() {
static int i; // 只初始化一次
printf("%d\n", i);
i++;
}
```
在这个例子中,`fun()`每次被调用时,`i`的值会递增,而不是每次都从0开始。
2. 当在文件作用域(全局区域)使用`static`声明变量时,该变量仅在当前源文件可见,成为内部链接(即文件局部的全局变量),其他文件无法访问。
另一方面,`extern`关键字用于声明一个变量是在其他地方定义的全局变量。当在函数外部声明一个变量时,如果不加`static`,默认就是全局变量,可以在程序的任何地方访问。然而,如果你想在其他文件中引用一个全局变量,需要使用`extern`关键字进行声明,如下所示:
```c
// 文件1
int global_var = 42; // 定义全局变量
// 文件2
extern int global_var; // 声明全局变量
```
请注意,如果没有初始化全局变量,其默认值为0。如果多个文件中都有`extern`声明同一个未初始化的全局变量,且只有一个文件定义了它,程序才能正常运行。如果每个文件都定义了变量,编译器通常会报错,除非明确地使用`extern`初始化(如`extern int global_var = 42;`),否则会导致重复定义。
`static`和`extern`都是C/C++中用来管理变量作用域和生命周期的关键字,理解它们的用法对于编写可维护和可扩展的代码至关重要。在实际编程中,合理使用这两个关键字可以帮助避免命名冲突和内存管理问题。
相关推荐







銀翼
- 粉丝: 22
最新资源
- Java程序转换成exe的工具介绍
- 局域网TCP/IP数据收发调试工具:16进制支持
- 自制字模软件优化:兼容标准字模格式
- GPRSDemo实例的简单实现与应用
- 深入掌握VB6.0编程:结构、对象及数据链接
- 基于MFC开发的简易图形计算器源码分享
- 快速J2EE开发的嵌入式Tomcat5.5配置指南
- Notepad++ 5.03版本开源源代码发布
- LinqDemo实例解析:ASP.NET与LINQ结合使用
- C#实现的QQ客户端源码解析
- 深入解析飞鸽传书Java版源码实现
- JNative插件1.4RC2版本发布:Java调用C语言的便捷方案
- Jadclipse:Eclipse平台上的Java反编译器插件
- C语言基础教程与实例解析
- 动态调整进度条背景颜色的程序技巧
- FCKeditor解决中文乱码和文件上传问题
- ASP编程实战百例精选:详尽的编程范例解析
- ERP标准流程详细解析:出入库、库存、销售管理
- 深入解析BIOS备份还原的全面指南
- Java五子棋游戏实现及源代码下载指南
- C#编程控制电脑关机、重启与注销操作
- Struts2技术打造的可运行网上购物商城
- MP3编解码设计的C语言源代码实现
- 深入分析PetShop 4.0的架构设计与实现步骤