【C语言】static的三种用法

目录

1.static修饰局部变量

2.static修饰全局变量

3.static修饰函数

1.static修饰局部变量

      修饰过后局部变量在出了作用域后不销毁,改变了局部变量的生命周期,生命周期变长,和程序的生命周期一样。本质上是改变了变量的存储类型

 

void test1()
{
    int a = 1;
    a++;        
    printf("%d ", a);
}
int main()
{
    int i = 0;
    while (i < 10)//循环十次
    {
        test1();
        i++;
    }
    return 0;
}

针对test1():

程序每运行一次,a都会销毁。

a每一次都会从1开始,++之后增加成2。

所以结果是2 2 2 2 2 2 2 2 2 2 

void test2()
{
    static int a = 1;
    a++;        
    printf("%d ", a);
}
int main()
{
    int i = 0;
    while (i < 10)//循环十次
    {
        test2();
        i++;
    }
    return 0;
}

针对test2():

由于有static ,程序每次运行,a不会销毁。

a第一次都会从1开始,++之后增加成2,第二次++后变成3,一次类推

所以结果是2 3 4 5 6 7 8 9 10 11 

拓:在使用全局变量时,如果不在一个文件里,进行声明即可(用extern声明)

2.static修饰全局变量

(1)static修饰全局变量后,这个全局变量只能在自己所在的源文件(.c)内部可以使用,其他源文件不能使用

(2)全局变量在其他源文件内部可以使用,是因为全局变量具有外部链接属性。但是被static修饰之后,就变成了内部链接属性,所以其他源文件就不能使用

 

3.static修饰函数

      使得函数只能在自己所在的源文件内部使用,不能在其他源文件内使用。本质上 static将函数的外部链接属性变成了内部链接属性

未加static:

 加了static:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值