c语言中static关键字的作用

1.什么是关键字呢?

      C语言关键字是指被C语言编译器预定义并具有特殊含义的保留字。就像是我们人体的各个器官,每个关键字都有着自己特有的的功能。

2.常见的关键字有哪一些呢?

auto  break   case  char  const   continue  default  do   double else  enum  
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while

3.关键字static的作用:

static翻译成汉语是静态的意思。在c语言中,static是用来修饰变量和函数的。

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

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

3、修饰函数-成为静态函数。

3.1.static修饰局部变量

我们先看以下代码:

如果执行以上代码,结果很明显:

 由于变量b是在函数test()里面的局部变量,每次执行函数都会重新生成变量b,结束后又会销毁变量b,所以无论执行多少次test(),其结果都是一样的。

现在我们用static修饰变量b,结果会发生什么呢?

 这里我们可以看到,结果发生了变化,为什么会这样呢?

这是因为,用static修饰的局部变量的本质就是使得该变量的存储位置发生了变化。本来局部变量存放在栈区,被static修饰后就存放在静态区了,而静态区存放的变量生命周期较长,在test()结束时并不会被销毁,到下一次执行的时候,由于变量b已经存在,就不会执行生成变量b这行代码。所以变量b一直存在,它的值也就随着b+=2一直变化。

3.2.static修饰全部变量

 不用static修饰的全局变量:

 用static修饰全局变量:

其结果:

 报错了!我们发现用static修饰的全局变量只能在源文件内部自己使用,不能在其他源文件中使用。

这是因为本来全局变量是具有外部链接属性的,也就是可以供外部源文件使用,而如果被static修饰后,就会变成内部链接属性,也就是说此时的变量value只能在自己的源文件内部使用。

3.2.static修饰函数

来看以下代码:

这里我们定义了一个Mx()函数,用来求俩个整数的最大值,很明显,执行程序后会c的结果是10:

现在我们用static修饰 :

其结果:

 这里报错提示为:没有找到Mx()函数,无法解析。

其实函数也是具有外部链接属性的,跟全局变量一样一旦被static修饰后就变成了内部链接属性,也就不能在源文件外部被调用了。

以上就是static关键字的常见的作用以及用法,如果想要更加深刻的了解static的机制,最好再去了解一下计算机的内存分区,以及各个区块的作用。感谢大家的阅读,如果以上有错误的地方,请及时指出来!谢谢大家。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值