static在C语言中的用法

静态关键字static。在C语言中,static关键字修饰变量和函数:

1、static修饰局部变量

局部变量的生命周期延长。当static修饰局部变量时,局部变量出了作用域之后不销毁。其生命周期变成整个程序的生命周期。本质上,static修饰局部变量的时候,改变了变量的存储位置。

内存:一个可执行C程序在内存中主要包含5个区域别是代码段(text),数据段(data),BSS段,堆段(heap)和栈段(stack)。

一般我们把进程地址空间分为三个区域:栈区,堆区,静态区。

局部变量原本存放于栈区,存放在栈区的数据特点是进入作用域创建,出作用域销毁。

局部变量被static修饰后,局部变量就被存放到了静态区,静态区的数据特点是在程序结束了后才销毁。

#include <stdio.h>
void test()
{
    static a = 1;
    a++;
    printf("%d", a);
}  
//a的值并未被销毁
int main()
{
    int i = 0;
    for (i = 0; i < 5; i++)
    {
        test();
    }
    return 0;
}

程序运行结果:static修饰局部变量使其生命周期变长。

2、static修饰全局变量

static修饰全局变量改变了变量作用域,使静态的全局变量只能在自己所在的源文件(.c)使用,即其他源文件不能再使用这个全局变量。

全局变量原本是有外部链接属性的,可以在其他的源文件中使用此变量,经过static修饰之后失去了外部链接属性。

3、static修饰函数

static修饰函数与修饰全局变量效果相同,改变了函数的外部链接属性,只能在自己所在的源文件使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值