Static关键字的三种用法

在C语言中,static关键字有3种常见的使用方法:
1.static修饰局部变量
2.static修饰全局变量
3.static修饰函数

1.当static修饰局部变量时,我们来看下面的代码:

int main()
{
	for (int i = 0; i < 3; i++)
	{
		static int a = 0;
		a++;
		printf("%d ", a);
	}
	return 0;
}

输出为:
在这里插入图片描述
当去掉int前面的static时,我们得到的结果如下:
在这里插入图片描述
当没有static时,结果为3个1,我们很容易理解,3次循环,每次进入循环,a的值都为0,所以三次循环的输出都为1;当有static修饰时,从输出结果来看,每次进入循环a的值是上一次循环结束时a的值,也就是进入循环后,a的值没有被初始化为0,换句话说,被static修饰的局部变量出了作用域,生命周期也没有结束,直到整个程序结束,生命周期才会结束。

2.当static修饰全局变量时,我们来看下面的代码:
在这里插入图片描述
在这里插入图片描述
首先我们在test_1.c这个源文件中创建一个全局变量a,我们再在test.c声明一下,然后打印a的值,结果为10。
当我们用static去修饰这个全局变量,再去打印a的值会发生错误,
在这里插入图片描述
他说a为无法解析的外部符号,而我们在a所属的那个源文件(即test_1.c)中去打印a的值,可以正常输出的,所以当static修饰全局变量时,被修饰的变量作用域为变量所在的源文件。

3.当static修饰函数时,大家可以自行去验证,我先把结论告诉大家,static修饰函数时,被修饰的函数只能在该函数的源文件中使用,在其他源文件中不能调用该函数,这一点和修饰全局变量很相似。

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值