C++学习笔记系列2-14

static变量

static变量又称为"静态变量",它和auto变量一样,也是写在变量声明的最前面。如:

static int i = 10;

静态变量可以分为:静态全局变量、静态局部变量2种类型,静态全局变量声明在函数外部,静态局部变量则在函数内部。他们有一个明显的特点,即:声明一次,永久使用。

静态变量的优缺点:

优点:静态变量只初始化一次,数据一直保留,默认值为:0或空值

缺点:静态变量会一直占用内存空间,直到程序运行结束。

#include <iostream>

using namespace std;

static int b; // 此处未赋值,编译器默认赋值为:0

void PuTong()

{

int a = 0;

cout<<"普通变量:"<< a <<endl;

++a;

} // 普通函数内部的变量,在每次调用时都会被从新创建并赋值

void JingTaiQuanJu()

{

cout<<"静态全局变量:"<< b <<endl;

b++;

} // 使用了静态全局变量 b ,只初始化一次,之后再调用这个函数,则在原基础上递增

void JingTaiJuBu()

{

static int c = 1;

cout<<"静态局部变量:"<< c <<endl;

c++;

} // 使用了静态局部变量,和静态全局变量一样。

int main()

{

PuTong();

PuTong();

JingTaiQuanJu();

JingTaiQuanJu();

JingTaiJuBu();

JingTaiJuBu();

}

输出:普通变量:0

普通变量:0

静态全局变量:0

静态全局变量:1

静态局部变量:1

静态局部变量:2

通过以上代码,我们看到静**态变量和普通变量的区别,静态变量,无论全局还是局部,都只要一次初始化,之后便在原有基础上进行改变,而普通变量是不具备这个能力的。**正因如此,静态变量更适合做一些统计数据的函数因子。

静态全局变量和全局变量的区别:

全局变量:可以在多个文件中访问,适合需要共享数据的场景;

静态全局变量:只能在定义它的源文件中访问,具备封装的特性。