STATIC 关键字

static作用:

1、修饰变量:

a)改变作用域,对全局变量来说,static修饰的变量作用域为从定义之处开始,到文件结尾处结束;别的源文件中不能引用该变量,即使用extern也不行;本文件内,定义之前也不能使用,除非用extern声明;对局部变量来说,只能作用在函数内部,在这一点上来说和普通的局部变量一致;

b)存储方式,对全局变量来说,全局变量原本就存储在静态区域,在这一点上来说和普通全局变量一致;对局部变量来说,普通的局部变量定义在动态区(与关键字auto对应),在函数执行完后,普通的局部变量被释放;而静态局部变量,被定义在静态区,函数执行完之后,该静态变量仍然储存在静态区,不会被释放和销毁,函数被下次调用时仍然用到这个值。

static int j;
void fun1(void)
{
static int i=0;
i++;
}


void fun2(void)
{
j=0;
j++;
}


void main()
{
int k=0;
for(k=0;k<10;k++)
{
fun1();
fun2();
}   
}


  static int i=0;      //声明,并初始化,只在函数第一次被调用时执行;下一次的调用不会重新初始化,因为i变量已经在内存的静态区,只需要依据上一次的值改变/即可,所以在main函数中调用10次之后,i的值为10。如果去掉static,那么每次执行完函数之后,i都不释放,那么下次调用函数时需要重新声明并初始化。


j=0;    //全局的静态变量,此处不是初始化,而是赋值,所以在每次调用这个函数,都执行这一步,main函数调用十次,每次都赋值为0


2、修饰函数:

函数前面加static,是函数称为静态函数,此时static的含义并不是指存储方式,而是指函数的作用域仅限于本文件,所以又称为内部函数。

另外一点不同就是static函数在执行时并不是拷贝一份,而是直接执行。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值