static静态变量(C语言)

本文介绍了static静态变量在C语言中的关键特性,包括作用域限制、生命周期管理和在限制源文件访问中的运用。通过实例演示了如何通过static改变变量和函数的可见性,并强调了它在内存管理和程序设计中的重要作用。
摘要由CSDN通过智能技术生成
static静态变量在C语言中的作用

static 静态变量:在内存中存储在全局区,如果没有手动初始化,则其初始值为 0

1、限制作用域

当我们不希望某个变量或者函数被访问的时候,可以使用 static变量
举例:我们首先定义两个源文件 main.ctest.c,内容分别如下

// main.c
#include <stdio.h>

int main() {
    func();
}
// test.c
#include <stdio.h>

int a = 10;

void func() {
    printf("%d\n", a);
}

这里可以看到,我们并没有使用 static变量,也没有打开自定义头文件,这时候我们使用 gcc 命令来编译这两个源文件

gcc main.c test.c -o main

会得到一个可执行文件,运行可执行文件,得到以下输出结果
在这里插入图片描述
可以看到,就算我们没有打开自定义头文件,依然会使用到其它源文件里面的函数。

重点来了

当我们想把某个变量或者函数限制在当前源文件的作用域的时候,只需要在变量或函数前面加上 static 关键字即可
test.c修改如下:

// test.c
#include <stdio.h>

int a = 10;

static void func() {
    printf("%d\n", a);
}

当修改 test.c之后,再次编译这两个源文件,这时候就会编译失败,因为 func() 函数被限制在 test.c源文件里面,如果其它源文件想要访问 func() 函数,需要通过在 test.c源文件里面在写一个函数,然后通过这个函数调用 func() 函数。

2、管理生命周期

因为 static变量会存储在内存中的全局区,所以 static变量随着程序结束而结束
比如我们在函数里面写一个 static变量用来计数,源文件如下

#include <stdio.h>

void func() {
    static int num = 0;
    printf("%d\n", ++num);
}
int main() {
    for (int i = 0; i < 5; i++) {
        func();
    }
}

运行结果如下:
在这里插入图片描述
可是如果没有使用 static变量,那么结果就会像下面这样,
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值