C语言进阶教程(static到底有啥用?)

简介: C语言进阶教程(static到底有啥用?)

前言

本篇文章将给大家介绍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 可以提高代码的模块性和可维护性,避免命名冲突,并优化变量和函数的访问。


相关文章
|
1月前
|
存储 C语言
【C语言】static 关键字详解
`static` 关键字在C语言中用于控制变量和函数的作用域和生命周期。它可以用于局部变量、全局变量和函数,具有不同的效果。理解 `static` 关键字的用法有助于封装和管理代码,提高代码的可维护性和可靠性。
60 3
|
7月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
7月前
|
C语言
【C语言】:static和extern的详细介绍和使用
【C语言】:static和extern的详细介绍和使用
76 1
|
3月前
|
C语言 C++
C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
在C语言中,`static`关键字主要用于变量声明,使得该变量的作用域被限制在其被声明的函数内部,且在整个程序运行期间保留其值。而在C++中,除了继承了C的特性外,`static`还可以用于类成员,使该成员被所有类实例共享,同时在类外进行初始化。这使得C++中的`static`具有更广泛的应用场景,不仅限于控制变量的作用域和生存期。
80 10
|
3月前
|
C语言 开发者
C语言实现猜数字小游戏(详细教程)
C语言实现猜数字小游戏(详细教程)
|
3月前
|
编译器 C语言 C++
VSCode安装配置C语言(保姆级教程)
VSCode安装配置C语言(保姆级教程)
|
5月前
|
存储 C语言
【C语言函数】static和extern关键字修饰
【C语言函数】static和extern关键字修饰
|
7月前
|
IDE 编译器 开发工具
C语言教程:如何进行环境搭建
C语言教程:如何进行环境搭建
|
7月前
|
存储 机器学习/深度学习 编译器
C语言基础简单教程
C语言基础简单教程
|
7月前
|
搜索推荐 编译器 C语言
C语言的简单教程
摘要: 了解C语言中的注释,包括//单行和/*多行*/注释,注意不要嵌套。使用快捷键Ctrl + K, Ctrl + C/U处理注释。C语言的关键字如&#39;int&#39;和&#39;return&#39;有特定含义,通常小写且高亮显示。常量是不可变的,分为不同类型。练习涉及识别不同类型的常量,如整型、实型和字符型。使用printf通过占位符输出常量,例如`printf(&quot;%d&quot;, 10)`。作业包括根据占位符输出个性化信息,如学校名字、高考分数和女朋友的详细信息,并掌握在不同情况下使用\n进行换行。

热门文章

最新文章