C语言:static修饰变量和函数的不同点与相似点

局部变量和全局变量

1.首先我们需要知道局部变量和全局变量的概念,顾名思义,局部变量就是只能局部使用,它位于内存的栈区。而全局变量位于内存的静态区,可以给整个工程来使用。也可以理解为全局变量与main函数共存。

#include<stdio.h>
int b;//全局变量
int main()
{
	int a = 0;//局部变量
	return 0;
}

2.由上边的代码也可以清楚的知道,局部变量只能在它所处的大括号里边起作用,而全局变量没有大括号的限制,整个工程都可以用。


生命周期与作用域

  有了上边的铺垫,生命周期就是变量从创建到销毁的全过程,而作用域就是变量能够使用的范围。一般来说,生命周期和作用域应该是一样的。但加上static会有什么不同呢?请看下文。


static修饰局部变量

1.使用方法

  其实在定义的变量前边再加上static关键字就可以了

// 大括号表示里边的变量a是局部变量。

{

  static int a = 100; 

}

2.使用效果

下边我用代码加注释的方式来说明加上了static关键字到底对这个局部变量产生了哪些作用

显而易见,变量a用static修饰之后,它的生命周期变长了,本质原因是加上static关键字之后,局部变量从栈区变到了内存的静态区,不过这里要提醒一点,虽然变量a的生命周期变长了,但它的作用域仍然是它所在的大括号内部。


static修饰全局变量与函数

  将全局变量和函数放在一起是因为static作用于它们之后,效果其实是差不多的,对于初学者来说,平时是几乎用不到的,我就以截图加标记的形式给大家说明一下区别。

大家注意我标记的几个地方,其中add.c和text.c文件是我自己建的两个不同的源文件,但是是在同一个头文件里边,通过对比可以发现,static关键字的使用让本来可以在整个工程当中使用的全局变量变得只能在它所处的源文件里边使用了,而本来可以声名一下就使用的函数也只能在它所处于的源文件里边使用了。


备注:以上是我自己对于static关键字的理解,希望能帮助到大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值