静态局部变量

静态局部变量也是在函数里声明的局部变量,与普通局部变量不同的是前面加了一个static关键字修饰。存在静态存储区而不是普通局部变量存储的栈区。

因为我们需要在函数结束以后保留此次函数运行中某个变量的值,以待下一次使用。全局变量可以做到这点但这个变量一旦放到全局,就可以被任意函数访问。如果只希望一个函数局部访问,又希望保留到下次使用,就可以使用静态局部变量。

静态局部变量只能被初始化一次,每次访问会使用上一次访问以后的值:

#include<iostream>
using namespace std;
void fun(){
    static int a = 1;//初始化语句,整个程序运行过程中只执行一次
    cout<<a++<<endl;
}
int main(){
    cout<<"第一次调用,静态局部变量的值为:\n";
    fun();//输出1
    cout<<"第二次调用,静态局部变量的值为:\n";
    fun();//输出2
    return 0;
}

注意静态局部变量未初始化,系统默认赋值为0。如果不是在初始化的时候赋值,则该赋值语句会执行两次:

static int a;//未初始化,系统默认赋值为0
a = 1;//每次进入函数a都从1开始
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值