关键词static的用法

C 语言中:
static 是用来修饰变量和函数的
1. 修饰局部变量 - 称为静态局部变量
2. 修饰全局变量 - 称为静态全局变量
3. 修饰函数 - 称为静态函数

 1. 修饰局部变量-称为静态局部变量

 我们来看一下第一种修饰局部变量的情况

第一段代码:

//代码1
#include <stdio.h>
void test()
{
    int i = 0;
    i++;
    printf("%d ", i);
}
int main()
{
 int i = 0;
    for(i=0; i<10; i++)
   {
        test();
   }
    return 0; }

结果:

第二段代码:

//代码2
#include <stdio.h>
void test()
{
	//static修饰局部变量
	static int i = 0;
	i++;
	printf("%d ", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	return 0;
}

 结果:

通过这两段代码的结果我们可以发现:

在代码1中,test()函数中定义的变量 i没有被static关键词修饰,出了它作用域就自动销毁了,每次调用test()函数,这个变量 i 都会重新创建并初始化为0。

而代码2中,test()函数中定义的变量 i 被static关键词修饰,即使出了它作用域也没有自动销毁,每次调用test()函数,这个变量 i 都会上一次的结果,一直到整个程序结束,才会销毁。

结论:

static 修饰局部变量改变了变量的生命周期
让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

2. 修饰全局变量-称为静态全局变量

 从上面的代码可以看出,在test1文件中定义的全局变量 a test文件中可以被打印。

这说明:全局变量具有外部链接属性。

补充:

extern ——是专门用来申请外部符号的关键字,如果想要使用来自其他文件(外部文件)的全局变量,需要先声明!

 

当我们给这个全局变量用 static 修饰以后会发生什么呢?

 我们可以发现,被 static 修饰以后,其他文件就无法使用这个全局变量了

结论:

当一个全局变量被static修饰时,这个全局变量的外部链接属性就变成了内部链接属性,使得这个全局变量只能在自己的源文件内部使用,其他文件不能再使用。

 

3. 修饰函数-称为静态函数 

 从上述代码中可以看出,在 test1.c 源文件中定义了一个 add 函数,在 test.c 中是可以正常被调用使用的。

如果 add 函数被 static修饰时,会发生什么呢?

我们可以看到当 test1.c 源文件中的 add 函数被 static 修饰时,就无法在test.c 源文件中被调用使用了。

结论: 

        static修饰函数时,函数本身也是具有外部链接属性的,被static修饰时,就变成了内部链接属性。

        使得这个函数只可以在本源文件内部使用,不能在其他源文件内使用。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值