【C语言】-- 学习static定义静态变量的用法

题目

学习static定义静态变量的用法 

问题分析

静态局部变量(static)作用:在其所在的函数调用结束后,该变量仍然存在,保存其值。

static   int  c,d ; //声明整型变量c,d是静态局部变量

静态局部变量与动态局部的区别:

①静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,分配在动态存储区空间而不在静态存储区空间,函数调用结束后立即释放。

②对静态局部变量的初始化是在编译时进行赋初值的,即只赋初值一次,在程序运行时它已有初值。以后每次调用该函数时不再重新赋初值而只是保留上次函数调用结束时的值。而对自动变量赋初值,不是在编译时进行的,而是在函数调用时进行的,每调用一次函数重新给一次初值,相当于执行一次赋值语句。

③如果在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符' \0 '(对字符变量)。而对自动变量来说,它的值是一个不确定的值。这是由于每次函数调用结束后存储单元已释放,下次调用时又重新另分配存储单元,而所分配的单元中的内容是不可知的。

④虽然静态局部变量在函数调用结束后仍然存在,但其他函数是不能引用它的。因为它是局部变量,只能被本函数引用,而不能被其他函数引用
 

代码

#include <stdio.h>
void function()
{
	int n = 0;
	static int static_n = 0;
	printf("n: %d \n", n);
	printf("static n :  %d \n", static_n);
	printf("\n");
	n++;
	static_n++;
}
void main()
{
	int i;
	for (i = 0;i < 3;i++)
		function();
} 

运行结果

 分析

可以发现n的值每次都是0,而静态局部变量static_c的值在递增,说明在函数调用结束后该变量的存储单元并没有被释放,仍然存在,保存其值。 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十三衙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值