C语言static 关键字浅析!

本文介绍了C语言中static关键字的作用及应用。详细解释了static如何用于修饰变量和函数,并通过示例代码展示了静态局部变量和静态全局变量的特点。此外,还说明了static修饰的函数仅限于当前文件使用。
static是c语言中的静态修饰符,修饰变量时,它分为静态全局变量和静态局部变量。用它修饰的变量位于内存的静态区,总是保存最后一个赋给它的值。而且在函数里面定义的静态局部变量只能在这个函数里面使用。其他地方不能调用这个变量也不能改变它的值。 修饰函数时,表明这个函数只能在这个文件中使用,其他文件不能调用这个函数,即使在其他文件使用了extern***来修饰 #include #include static int j; void fun1(void); void fun2(void); int main() { int k; for(k=0; k<10; k++) { fun1(); fun2(); } system("pause"); return 0; } void fun1(void) { static int i = 0; i ++; printf("%d/t", i); } void fun2(void) { j=0; j++; printf("%d/n",j); } 运行结果:1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1
### C语言 `static` 关键字的作用和使用场景 #### 局部静态变量 当在函数内部定义了一个带有 `static` 的局部变量时,该变量会在整个程序运行期间都存在。这意味着即使函数执行完毕返回后,这个变量仍然保留其值[^2]。 ```c #include <stdio.h> void count(); int main(void) { int i = 0; for (i = 0; i <= 5; i++) { count(); } return 0; } void count() { static int num = 0; // 声明一个静态局部变量 num++; printf("%d\n", num); } ``` 上述代码展示了如何利用静态局部变量来实现计数器功能,在每次调用 `count()` 函数时,`num` 变量会持续增加并保存之前的数值。 #### 文件范围内的静态对象 如果在一个源文件内声明了具有外部链接性的对象(即全局变量),可以加上 `static` 来限制这些对象仅限于当前编译单元可见。这有助于减少命名冲突的风险以及隐藏不必要的接口细节[^1]。 ```c // file1.c static int globalVar = 42; // 这里的globalVar只可以在file1.c中访问, // 而其他文件无法直接引用它。 ``` #### 静态成员函数与数据成员(针对C++) 虽然提问主要集中在C语言上,但在讨论 `static` 关键字的应用时也值得提及的是,在面向对象编程语言如C++里,还可以用于修饰类中的成员函数或数据成员,使其成为属于整个类而非特定实例的一部分。不过这部分超出了纯C语言的范畴。 #### 初始化行为差异 对于静态存储类型的变量,默认初始化为零;而对于自动存储类型(不带 `static`)则不会被隐式初始化,除非显式赋初值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值