(文章目录)


前言

本篇文章将给大家介绍static的用法,很多同学都是只听过这个static但是在实际工程里面好像很少使用到,那么这篇文章就会告诉大家static到底有什么作用吧。

一、static介绍

在C语言中,static 是一个关键字,它可以用于变量、函数和块作用域。它的含义和作用取决于它应用的上下文。

静态变量(static variable): 静态变量在函数内部或块作用域内声明,但其生存周期与程序的整个运行时间相同。静态变量的作用主要有两个方面:

静态变量在每次函数调用之间保持其值不变。即使函数返回并重新调用,静态变量仍然保持上一次的值。 静态变量只能在定义它的函数或块中访问,并且其作用域限制在定义它的函数或块内部。它在函数执行期间保留其值,并且不会与其他函数共享。

静态函数(static function): 静态函数是在函数声明前使用 static 关键字修饰的函数。静态函数的作用主要有两个方面:

静态函数的作用域限制在声明它的源文件中。它们不能被其他源文件中的函数调用,只能被同一源文件中的函数调用。 静态函数可以隐藏在其他源文件中具有相同名称的非静态函数。这样可以避免函数名冲突,并增强了代码的模块性。

静态全局变量(static global variable): 静态全局变量是在全局作用域内声明,并使用 static 关键字修饰的变量。静态全局变量的作用主要有两个方面:

静态全局变量的作用域限制在声明它的源文件内。它不能被其他源文件中的函数或变量访问,具有文件局部性。 静态全局变量在程序的整个周期内保持其值不变,与普通全局变量不同,它不会被其他源文件覆盖符号重名的全局变量所改变。

二、

1.静态变量的例子:

#include <stdio.h>

void increment() {
    static int count = 0; // 静态变量只会初始化一次
    count++;
    printf("Count: %d\n", count);
}

int main() {
    increment(); // 输出:Count: 1
    increment(); // 输出:Count: 2
    increment(); // 输出:Count: 3
    return 0;
}

2.静态函数的例子:

#include <stdio.h>

static void displayMessage() {
    printf("This is a static function.\n");
}

int main() {
    displayMessage(); // 调用静态函数
    return 0;
}

3.静态全局变量的例子:

#include <stdio.h>

static int count = 0; // 静态全局变量

void increment() {
    count++;
    printf("Count: %d\n", count);
}

int main() {
    increment(); // 输出:Count: 1
    increment(); // 输出:Count: 2
    increment(); // 输出:Count: 3
    return 0;
}

总结

在C语言中,static 关键字用于修饰变量、函数和块作用域,具有不同的作用。它可以为变量和函数提供内部链接和文件局部性,限制它们的作用域和可见性,并保持它们的状态在函数调用或程序执行期间的持久性。使用 static 可以提高代码的模块性和可维护性,避免命名冲突,并优化变量和函数的访问。