C语言难点专题——static

static修饰的函数或者变量存在两种情况: 第一, 全局的静态函数和方法; 第二, 局部的静态变量。

 

 

第一: 全局的static变量和方法

 

全局的Static变量和函数,仅仅在定义的文件中有效。

 

存在以下两个文件:


然后再定义两个文件,都含有相同的名称为function的静态和非静态函数,

如下面的源代码所示:



 

结果:

this is the variable value 20

this is the return value 110

表明:

1.    static定义的函数,或者变量,仅仅在文件域有效。所谓的文件域,就是包含头文件在内的文件域。

2.    基于第一点,static 变量不会和其它文件域中的static变量冲突

3.    同一个文件,不能同时出现static和非static变量。

 

static函数用途非常广,因为c语言中全局的函数不宜太多,因此,用static方法可以限制函数的可见性

第二: 局部的静态变量【不提及局部方法, 因为暂时用得不多】

局部的静态变量, 局部的静态变量具有局部的全局性。即某个函数的局部静态变量,对这个函数是可见的。并且只初始化一次。

【注意,局部并不一定是函数中的局部,而是一个区块中的局部】

 

看如下代码:

 

 

 

结果:

 

 

result1: 105

result2: 1005

result3: 110

result3: 1010

 

 

这里充分展示了static变量对于某个区块的全局可见性,并且不进行第二次初始化。

 

 

可能大家注意到,在全局的static中,没有两次初始化问题,原因是全局域无法出现两次调用的情形。因为全局域永远只

 

经历一次。如果经历多次,类似于头文件重复包含,将出现重复定义的问题。


另外,全局域不允许出现函数调用,或者参数赋值这类逻辑操作。

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值