C语言之关键字static的作用(深度刨析)

static用来说明静态变量,并且static的作用分为以下三种:

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

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

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

1.当static修饰局部变量时,使局部变量的生命周期延长,来段代码说明:

 

 

a.  我们知道,局部变量进入时创建,出了作用域之后就销毁了 ,而经过static修饰过的局部变量的生命周期会延长,从而导致出了作用域之后局部变量不会被销毁,也就是说代码中的变量a一直存在,存储在内存中(a的地址也不变)。

static int a=1;//当代码运行到这一段时会直接跳过这一行代码,从而导致a的值产生累计的效果。

这样解释你如果可以理解的话,那么我们就进行更深入的解析。

b.  我们的内存分三个区:栈区,堆区,静态区

而:

int a = 1;//局部变量a是放在栈区的。进了作用域创建,出来作用域销毁。
staic int a = 1;//此时a是静态变量,是存储在静态区的。出了作用域不销毁,直到程序结束才销毁。

 c.  所以综上得出结论:static修饰的变量实际上是改变了变量在内存中的存储类型(使得变量从一开始的栈区转移到静态区)从而导致生命周期延长,但是并不影响作用域。

2.static修饰全局变量时,将外部链接属性变成了内部链接属性,使全局变量的作用域只能在该源文件中执行(全局变量是具有外部链接属性的)

 

//这里extern是用来申明外部符号的。

仅仅加了一个static就开始报错。

3.static修饰函数时,将外部链接属性变成了内部链接属性,使函数的作用域只能在该源文件中执行(与修饰全局变量十分类似)

 

                                           那么请留下您的足迹,咱们一起进步!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CR0712

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值