【C 】static 关键字

目录

    • static
      • 1)基本概念
      • 2)主要特点
      • 3)用途1:静态局部变量
      • 4)用途2:静态全局变量
      • 5)用途3:静态函数
      • 6)总结

static

1)基本概念

static 是C语言的一个关键字。

static 常用于声明 静态局部变量静态全局变量静态函数

static 的使用可以提高程序的模块性和封装性,防止命名冲突,并在一定程度上控制变量和函数的可见性。

2)主要特点

static的主要特点就是改变变量的:作用域生命周期存储位置

对比四种变量。

变量类型 作用域 生命周期 存储位置
局部变量 函数内部 从变量创建到函数结束 栈区
全局变量 项目内所有文件 整个程序运行期间 数据区
静态局部变量 函数内部 整个程序运行期间 数据区
静态全局变量 仅定义所在的文件 整个程序运行期间 数据区

对比两种函数。

变量类型 作用域 生命周期 存储位置
全局函数 项目内所有文件 整个程序运行期间 代码区
静态函数 仅定义所在的文件 整个程序运行期间 代码区

3)用途1:静态局部变量

  • 用于在函数内部声明的变量。生命周期为整个程序运行期间,但作用域限制在声明它的函数内。
  • 目的是:保留其值在函数调用之间的状态
C 复制代码
void exampleFunction() {
    static int count = 0;  // 静态变量
    count++;
}

4)用途2:静态全局变量

  • 用于在全局作用域声明的变量。作用域限制在声明它的源文件内。
  • 目的是:防止在其他文件中访问该全局变量。所以在不同的文件中,可以出现重名的静态全局变量。如果不加static修饰的话,是会报错:multiply defined(多重定义)。
C 复制代码
// 文件1 
static int globalVar = 42;  // 静态全局变量    只能在该源文件中使用

// 文件2
static int globalVar = 32;  // 静态全局变量    只能在该源文件中使用

5)用途3:静态函数

  • 用于在文件内声明的函数,作用域限制在声明它的源文件内。
  • 目的是:防止其他源文件调用该函数。
C 复制代码
// 只能在该源文件中使用该函数
static void staticFunction() {
    // 函数实现
}

6)总结

这些是 static 在C语言中的一些常见用法。static 的使用可以提高程序的模块性和封装性,防止命名冲突,并在一定程度上控制变量和函数的可见性。

  • 一般,不希望其他文件调用本文件的XXX函数,就用static修饰它。
  • 一般,不希望其他文件调用本文件的YYY变量,就用static修饰它。
相关推荐
这是个栗子18 分钟前
前端开发中的常用工具函数(八)
开发语言·前端·javascript
凤凰院凶涛QAQ32 分钟前
《Java版数据结构 & 集合类剖析》栈与队列:“push/pop 是栈的灵魂,offer/poll 是队列的骨架——四组 API,两种人生”
java·开发语言·数据结构
研☆香40 分钟前
为什么变量声明在赋值前也能使用?—— 深入理解 JavaScript 变量提升与作用域
开发语言·前端·javascript
右耳朵猫AI1 小时前
PHP周刊2026W28 | 安全更新、Laravel 13.18、Twig 3.28
开发语言·php·laravel
second601 小时前
第一部分:快速上手 —— 建立 C++ 基本语法与编程范式
开发语言·c++
郝学胜-神的一滴1 小时前
算法实战:最小k个数——大顶堆的优雅解法
开发语言·数据结构·c++·python·程序人生·算法·排序算法
bksczm1 小时前
linux之线程概念和控制
linux·开发语言·c++
JackieZhengChina2 小时前
零依赖轻量级JS悬浮提示插件title2tip-js的使用教程
开发语言·javascript·ecmascript
hehelm2 小时前
Linux网络编程—TCP字典翻译系统
linux·开发语言·网络·c++·tcp/ip
李永奉3 小时前
杰理可视化SDK开发-【BUG】配置“TWS两边同时按消息使能”功能后,按键单击功能无效失灵
开发语言·单片机·嵌入式硬件·物联网·bug