代码编织梦想

在这里插入图片描述

在C语言中,static关键字有多种用途,具体取决于它的使用位置。它可以用于声明静态局部变量、静态全局变量和静态函数。每种使用方式都有不同的含义和作用。

静态局部变量

当在函数内声明一个变量为静态变量时,该变量在函数调用之间保持其值,而不是每次调用函数时重新创建和初始化。

#include <stdio.h>

void count() {
    static int counter = 0;  // 静态局部变量
    counter++;
    printf("Counter: %d\n", counter);
}

int main() {
    count();
    count();
    count();
    return 0;
}

在这个例子中,counter是一个静态局部变量。尽管count函数被调用了三次,但counter变量仅在第一次调用时初始化为0,并且在函数调用之间保留其值。因此,输出结果将是:

Counter: 1
Counter: 2
Counter: 3

静态全局变量

当在文件范围内声明一个变量为静态变量时,该变量的作用域仅限于声明它的文件。这意味着它不能被其他文件中的代码访问,从而实现了文件范围的封装。

#include <stdio.h>

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

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

int main() {
    increment();
    increment();
    increment();
    return 0;
}

在这个例子中,globalVar是一个静态全局变量,它只能在声明它的文件中访问。即使有其他文件包含这个文件的头文件,也无法直接访问globalVar

静态函数

当一个函数被声明为静态时,该函数的作用域仅限于声明它的文件。这使得静态函数不能被其他文件中的代码调用。

#include <stdio.h>

static void staticFunction() {  // 静态函数
    printf("This is a static function.\n");
}

int main() {
    staticFunction();
    return 0;
}

在这个例子中,staticFunction是一个静态函数,它只能在声明它的文件中调用。

示例程序

以下是一个包含静态局部变量、静态全局变量和静态函数的综合示例:

#include <stdio.h>

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

// 静态函数声明
static void staticFunction();

void increment() {
    // 静态局部变量
    static int staticLocalVar = 0;
    staticLocalVar++;
    staticGlobalVar++;
    printf("staticLocalVar: %d, staticGlobalVar: %d\n", staticLocalVar, staticGlobalVar);
}

int main() {
    increment();
    increment();
    increment();
    staticFunction();
    return 0;
}

// 静态函数定义
static void staticFunction() {
    printf("This is a static function.\n");
}

在这个综合示例中:

  1. staticGlobalVar是一个静态全局变量,只有在声明它的文件中可以访问。
  2. increment函数中的staticLocalVar是一个静态局部变量,在函数调用之间保留其值。
  3. staticFunction是一个静态函数,只能在声明它的文件中调用。

总结

static关键字在C语言中非常有用,具有多种用途:

  1. 静态局部变量:在函数调用之间保留其值。
  2. 静态全局变量:使变量的作用域仅限于声明它的文件,实现文件范围的封装。
  3. 静态函数:限制函数的作用域仅限于声明它的文件,防止其他文件调用该函数。

通过合理使用static关键字,可以提高代码的模块化和封装性,从而增强程序的可维护性和安全性。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/EleganceJiaBao/article/details/140131275

c语言static 关键字总结_it小书生的博客-爱代码爱编程

static 关键字总结: 变量可以被static 修饰,意义有发生变化吗? 下面我们看个例子: (1)变量不加 static 修饰 #include <stdio.h> void test() {

c语言 static关键字的作用详解_hlkl.的博客-爱代码爱编程

前言: static 是用来修饰函数和变量的,可以修饰局部变量,全局变量以及函数 一、修饰局部变量  (称为静态局部变量) 来看俩段代码:    对于第一段代码来说,它循环5次,每次调用一下fun()函数,而fun()函数每次进去的时候,x的值都为0,所以,当x++后,每次输出的值都为1 对于第二段代码来说,与第一种情况相类似,

c语言static关键字-爱代码爱编程

概述 C语言中的static关键字用于修饰函数或变量,static关键字的作用有: 1、静态变量:使用static修饰的全局变量或者静态变量在整个程序中只会被初始化一次,在程序的其他函数中可以访问该变量,保证变量的唯一性。 2、静态函数:使用static修饰的函数只能在本文件中被调用,不能被其他文件所调用,其作用域限制在声明它的文件内。 3

c语言static关键字详解(代码+原理+图解)-爱代码爱编程

目录 static 关键字作用 static 关键字的原理 总结 补充 static 关键字作用 1. 隐藏:当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函数都具有全局可见性;加上后就不再具有全局可见性。 //extern.c 源文件 char c = 'A'; //全局变量 void func()//全局

深入解析mvcc:多版本并发控制的数据库之道-爱代码爱编程

✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨  🎈🎈作者主页: 喔的嘛呀🎈🎈 ✨✨ 帅哥美女们,我们共同加油!一起进步!✨✨  目录 引言 一、什么是MVCC? 二、MVCC的实现原理 2.1版本号 2.1.1版本号的作用: 2.1

c语⾔数据类型和变量-爱代码爱编程

C语⾔数据类型和变量 1.数据类型介绍1.1 字符型1.2 整型1.3 浮点型1.4 布尔类型1.5 各种数据类型的长度1.5.1 sizeof操作符1.5.2 数据类型长度1.5.3 sizeof中表达式不计

c语言 输入输出使用-爱代码爱编程

一、getchar putchar puts  #include "stdio.h" /* 跟printf的区别 1.自动加入换行符 2.printf支持多种输出,而puts就是输出字符串 */ int main(){ char c; puts("请输入一个字符"); c=getchar(); puts("你输入的字符是