关键字static在C语言中的三种用法

static字面上的意思就是静态的,在C语言中作为关键字存在。

1. static 修饰局部变量

  • 没有static 修饰p的情况下,p作为test函数的局部变量,进入test函数就创建,退出test函数就销毁,因此每次进入test都会重新执行int p = 0;并且p++,所以最终结果为五个1。
  • 有static 修饰p的情况下,此时p就是静态的局部变量,只有循环的第一次会执行int p = 0;,往后的循环会自动跳过int p = 0;,并且退出test函数之后依然不会销毁,会一直存在于内存之中。第一次循环p为1,退出test函数之后不销毁,第二次循环时p仍然保留着第一次循环的值1,此时再次执行p++即第二次循环为2,往后同理。

可以简单理解为:static修饰局部变量时,局部变量的生命周期变长了,但是作用域仍然不变,只能在局部范围内使用。

2. static 修饰全局变量

因为全局变量是具有外部链接属性的,这种属性决定了全局变量可以在多个文件之间相互使用,使用方法是通过extern关键字来声明外部文件的全局变量。

 而在使用static修饰全局变量之后,将全局变量test的外部链接属性变成了内部链接属性,使得test只能在当前.c文件内部使用,不能在其他.c文件中使用了,因此会报错。

可以简单理解为:static修饰全局变量时,全局变量的作用域缩小了,只能够在当前.c文件内使用。当需要全局变量不被其他文件使用时,可以使用static限制其作用域,减少数据污染。

3. static 修饰函数

在理解了static修饰全局变量后,修饰函数就非常好理解。

函数也是具有外部链接属性的,决定了函数可以被多个文件使用,使用方法依然是extern关键字修饰。

 同理,当static修饰函数时,函数的外部连接属性也被改变成内部链接属性,此时test1.c将无法找到Add()函数。

可以简单理解为:static修饰函数时,函数的作用域缩小了,只能够在当前.c文件内使用。当不需要其他文件使用到该函数时,可以用static进行限制。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Hacynn

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

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

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

打赏作者

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

抵扣说明:

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

余额充值