C++基础之static关键字(1)--静态局部变量详解

本篇文章主要讲解C++基础中static关键字的静态局部变量并进行实例演示。

一.静态局部变量定义

在讲静态局部变量时,我们首先看一下全局变量和局部变量。
1.全局变量
全局变量定义在所有函数之外,并且在其作用域内的所有函数都可以访问
2,局部变量
局部变量定义在一个函数内部,在函数之外是不可访问的。

通过一个例子演示

int num=1;//全局变量
int Variable()
{
    int num=10;//局部变量
	return num;
}
int main()
{
	cout<<"全局变量num="<<num<<endl;
	cout<<"局部变量num="<<Variable()<<endl;
}

结果:
在这里插入图片描述
且全局变量可以在main函数中修改:

int num=4;
	cout<<"全局变量num="<<num<<endl;
	cout<<"局部变量num="<<Variable()<<endl;

修改后全局变量不再是1,而是4。
在这里插入图片描述
在局部变量前加上“static”关键字,就成了静态局部变量。
特点:
1).函数结束时,静态局部变量不会消失,每次该函数调用 时,也不会为其重新分配空间。
2).静态局部变量和全局变量都存放在内存的静态存储区。

二.静态局部变量和局部变量的区别

1.存储位置不同
静态局部变量存放在内存的静态存储区。
局部变量存放在栈区或者工作寄存器。
2.生命周期不同
局部变量在定义它的函数内有效,但是函数返回后失效。
静态局部变量只在定义它的函数内有效,并且程序仅分配一次内存,函数返回后,该变量不会消失。

实例演示静态局部变量和局部变量的生命周期:

void func()
{
	int a=1;
	a+=1;
	static int f=1;   //静态局部变量
	f+=1;
	cout<<"静态局部变量f="<<f<<endl;
	cout<<"局部变量a="<<a<<endl;
}
int main()
{
	func();
	func();
}

结果:
在这里插入图片描述
可以发现:
局部变量在定义它的函数内有效,但是函数返回后失效。因此,每次调用函数,局部变量都会是使用初始默认值操作。

静态局部变量在程序中仅被分配一次内存,函数返回后,该变量不会消失。此后每次调用函数,都会使用内存中最新的值操作。

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: static关键字在C/C++中有多种用法。它可以用来修饰函数和变量,控制它们的存储方式和作用范围。在函数内部声明的static变量是静态局部变量,它在函数调用结束后仍然保留其值,且只能在声明它的函数中访问。在全局作用域中声明的static变量是静态全局变量,它只能在声明它的文件中访问,不能被其他文件访问。在C++中,static还可以修饰类的成员,包括静态成员变量和静态成员函数。静态成员变量是类的所有实例共享的变量,静态成员函数则可以直接通过类名调用,不需要实例化对象。总结来说,static关键字在C/C++中有多种用途,用来修饰函数和变量的存储方式和作用范围。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [在 C/C++中 static 关键字详解](https://blog.csdn.net/weixin_45910068/article/details/123621193)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [C++ static关键字](https://blog.csdn.net/weixin_44966641/article/details/122149739)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值