static

static:

静态变量可以在任何可以申请的地方申请,一旦申请成功后,它将不再接受其他的同样申请

一、局部静态变量

1、静态局部变量存在静态存储区,但是作用域与一般局部变量相同,生命周期一直延续到程序结束(虽然一直存在,但是其他函数不能调用),局部变量到函数结束

2、static所定义的局部变量只在程序刚运行时初始化,且只进行一次,在两次函数调用时,第二次调用函数只保留第一次退出时的值,这体现了static的记忆性(程序一)

#include<stdio.h>


int fun(void)
{
	static int a = 10;
	return a--;
}
int a = 1;
int main(void)
{
	for(; a < 10; a++)
	{
		printf("%d\n", fun());
	}
	static int b[10];
	for(; a > 0; a--)
	{
		printf("%d ", b[a]);
	}
	return 0;
}

3、静态局部变量只能初始化常量和常量表达式,如果初始化没有被赋值,系统会自动赋值为0(数字变量)或空字符(字符变量)
4、静态局部函数占用时间长,可读性差,尽量避免使用

二、静态全局变量

1、全局变量本来就是静态存储方式,所以与静态全局变量同样都储存在静态存储区

2、当源程序由多个源文件组成时,一般全局变量作用域是整个源程序,而静态局部变量限制在当前源文件(声明来了该静态全局变量的cpp文件),其他源文件不能使用

三、静态函数

1、静态函数只在当前文件可见,不能被其他文件可见,其他文件可以定义同名函数

2、具有计数器,统计次数的功能






  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值