C++ 学习记录之静态变量static
2015-09-28 14:15
363 查看
对于静态变量还是有些不明白,就是说这个变量会保留每次运行结果的值而不是次次都初始化,如下代码
#include <iostream>
using namespace std;
int f(int a) //定义f函数,a为形参
{
auto int b=0; //定义b为自动变量
static int c=3; //定义c为静态局部变量
b=b+1;
c=c+1;
return a+b+c;
}
int main( )
{
int a=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<" ";
cout<<endl;
return 0;
}
运行结果为:
7 8 9
先后3次调用f函数时,b和c的值如书中表4.1所示。
表 4.1 调用函数时自动变量和静态局部变量的值
而c不设为static时运行结果如下:
#include <iostream>
using namespace std;
int f(int a) //定义f函数,a为形参
{
auto int b=0; //定义b为自动变量
static int c=3; //定义c为静态局部变量
b=b+1;
c=c+1;
return a+b+c;
}
int main( )
{
int a=2,i;
for(i=0;i<3;i++)
cout<<f(a)<<" ";
cout<<endl;
return 0;
}
运行结果为:
7 8 9
先后3次调用f函数时,b和c的值如书中表4.1所示。
第几次调用 | 调用时初值 | 调用结束时的值 | |||
自动变量b | 静态局部变量c | b | c | a + b+c | |
第1次 | 0 | 3 | 1 | 4 | 7 |
第2次 | 0 | 4 | 1 | 5 | 8 |
第3次 | 0 | 5 | 1 | 6 | 9 |
相关文章推荐
- C语言变量的存储方式和生存期
- C语言-耶稣门徒
- LR调用VC++6.0动态链接库
- C++ 动态开辟二维数组的的方法
- 【操作系统】c++程序的内存分配
- 移动构造-C++11
- C/C++ 中头文件相互包含引发的问题
- C++如何避免使用rand() % xxx的方式实现类似抽奖概率类的问题
- C++ boost::filesystem官方指南
- 【c++程序】浅说虚函数
- 转载 浅谈C/C++中的static和extern关键字
- C++ std::vector : 用法与技巧
- 利用makefile文件来编译C++
- C++ sort vector<vector<int> > or vector<MyClass> 容器的排序
- C++学习笔记25,析构函数总是会宣布virtual
- C++中局部静态变量的调用问题
- C语言:排序算法
- C++ int main(int argc,char* argv[])详解
- c++笔试题-输入n,输出对应的所有长度为n的二进制串
- C/C++语言杂谈