没有合适的资源?快使用搜索试试~ 我知道了~
详细的描述C/C语言的关键字static的作用,及使用时应该注意的事项!
资源推荐
资源详情
资源评论
static 关键字是 C, C++中都存在的关键字, 它主要有三种使用方式,
其中前两种只指在 C 语言中使用, 第三种在 C++中使用(C,C++中具体细
微操作不尽相同, 本文以 C++为准). (1)局部静态变量
(2)外部静态变量/函数
(3)静态数据成员/成员函数
下面就这三种使用方式及注意事项分别说明
一、局部静态变量
在 C/C++中, 局部变量按照存储形式可分为三种 auto, static, register
( <C 语言程序设计(第二版)> 谭浩强, 第 174-175 页)
与 auto 类型(普通)局部变量相比, static 局部变量有三点不同
1. 存储空间分配不同
auto 类型分配在栈上, 属于动态存储类别占动态存储区空间, 函数调用
结束后自动释放, 而 static 分配在静态存储区, 在程序整个运行期间都不
释放. 两者之间的作用域相同, 但生存期不同.
2. static 局部变量在所处模块在初次运行时进行初始化工作, 且只操作
一次
3. 对于局部静态变量, 如果不赋初值, 编译期会自动赋初值 0 或空字
符, 而 auto 类型的初值是不确定的. (对于 C++中的 class 对象例外,
class 的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否
是 static 类型)
特点: static 局部变量的”记忆性”与生存期的”全局性”
所谓”记忆性”是指在两次函数调用时, 在第二次调用进入时, 能保持第
一次调用退出时的值.
示例程序一
#include <iostream>
using namespace std;
void staticLocalVar()
{
static int a = 0; // 运行期时初始化一次, 下次再调用时, 不进行初
始化工作
cout < < "a= " < <a < <endl;
++a;
}
int main()
{
staticLocalVar(); // 第一次调用, 输出 a=0
staticLocalVar(); // 第二次调用, 记忆了第一次退出时的值, 输出 a=1
资源评论
海阔天空_栋
- 粉丝: 20
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功