C语言之详解静态变量static

C语言之详解静态变量static

在C语言中,关键字static可以用于修饰全局变量,局部变量和函数,其作用分别如下:

1. 修饰全局变量

  • 在全局变量前加上static关键字,表示该变量具有静态存储期和静态链接属性。
  • 在同一文件中的其他函数中不能访问该变量。
  • 只能被定义变量的函数访问。
  • 被初始化为0,除非在定义时显式初始化。
static int a;  // 声明一个静态全局变量

int main() {
    a = 1; // 正确,只能被定义变量的函数访问
    func();
    return 0;
}

void func() {
    a = 2; // 错误,在同一文件中的其他函数中不能访问该变量
}

2. 修饰局部变量

  • 在局部变量前加上static关键字,表示该变量具有静态存储期。
  • 该变量在程序编译时已经被初始化,并且只会在程序运行时被初始化一次,这也就是说局部静态变量的初始化只会在程序的第一次调用时进行。
  • 只能在定义该变量的函数中访问,但他的生命周期与程序相同。
void func() {
    static int a = 0; // 声明一个静态局部变量
    a++;
    printf("%d ", a);
}

int main() {
    func(); // 1
    func(); // 2
    func(); // 3
    return 0;
}

3. 修饰函数

  • 在函数的声明和定义前加上static关键字,表示该函数只在定义它的文件可见,也称为内部函数。
  • 禁止在其他文件中调用该函数。
static void func() {
    printf("I am a static function");
}

int main() {
    func(); // 正确,只能在定义函数的文件中调用
    return 0;
}

以上就是C语言static关键字的使用方法,希望可以对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言之详解静态变量static - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • C字符串操作函数实现方法小结

    C字符串操作函数实现方法小结 在C语言中,字符串操作是很常见的操作。C标准库提供了常用的字符串函数,例如sprintf、strstr等。但是,如果熟练掌握字符串操作函数的实现方法,不仅能够更深刻理解C语言中的字符串操作,而且可以提高我们的代码效率。在本文中,我们将介绍C字符串操作函数的实现方法,并实现一些常见的函数。 1. strlen函数的实现 strle…

    C 2023年5月23日
    00
  • JS实现简单的二元方程计算器功能示例

    下面我会详细讲解如何实现一个简单的二元方程计算器功能。 1.需求分析 首先,我们需要明确我们要实现什么功能。这个简单的二元方程计算器要能够接收用户输入的两个数值,然后进行加、减、乘、除运算,并将计算结果输出给用户。 2.实现步骤 2.1 创建HTML文件和JS文件 首先,我们需要创建一个HTML文件和一个JS文件。HTML文件用来布局和展示界面,JS文件用来…

    C 2023年5月22日
    00
  • C语言修炼之路灵根孕育源流出 初识C言大道生上篇

    C语言修炼之路灵根孕育源流出 初识C言大道生上篇 灵根孕育源流出 本篇文章首先介绍了C语言的起源和发展,以及C语言与其他计算机语言之间的关系和区别,为后续学习打下了基础。 初识C言大道生 本篇文章主要介绍了C语言的一些基本概念和语法,包括变量、数据类型、运算符、控制语句等重要内容,让读者初步了解C语言编程的基本思想和方法。 针对本篇文章,下面给出两个示例: …

    C 2023年5月23日
    00
  • DEV C++源码编译后控制台输出中文乱码问题解决

    以下是详细讲解“DEV C++源码编译后控制台输出中文乱码问题”的完整攻略: 问题原因及解决方案 开发过程中,我们经常会遇到中文输出乱码的问题。这是因为 C/C++ 标准库使用的是 ASCII 编码,而中文的编码不是 ASCII,所以输出会产生乱码。在 Windows 下,可以使用一些特殊的函数来解决这个问题。 解决方案 使用 _setmode 函数 _se…

    C 2023年5月23日
    00
  • 代码讲解C++继承和派生

    这里我就来详细讲解一下“代码讲解C++继承和派生”的完整攻略。 1. C++继承 C++中的继承是指从一个类中派生出另一个类,具体实现方式为在派生类的定义中使用“:”后面跟上基类的名称。 1.1 基类和派生类的定义 下面是一个基类的定义: class Shape { public: virtual void draw() = 0; virtual doubl…

    C 2023年5月24日
    00
  • C语言 常量详解及示例代码

    C语言 常量详解及示例代码 常量的概念 在程序运行中,我们常常使用一些固定的数值或字符串。为了方便起见,我们可以把这些固定的数值或字符串叫做常量。与变量不同的是,常量在程序运行时值是不发生变化的。 常量的分类 C语言中的常量主要有以下几类: 整型常量 实型常量 字符常量 字符串常量 枚举常量 下面我们将分别讲解这几类常量。 整型常量 整型常量是指不带小数部分…

    C 2023年5月23日
    00
  • C++11 shared_ptr 与 make_shared源码剖析详解

    C++11中的shared_ptr和make_shared是两个非常实用的特性,能够帮助我们更好地管理内存。本文将深入介绍shared_ptr和make_shared的实现原理,帮助读者更好地掌握这两个特性。 1. shared_ptr简介 shared_ptr是C++11提供的一种智能指针,用于管理动态内存。它可以自动对内存进行引用计数,并在引用计数为0时…

    C 2023年5月23日
    00
  • C语言使用rand函数生成随机数

    下面是详细讲解 C 语言使用 rand 函数生成随机数的完整攻略: rand 函数简介 rand() 函数是 C 语言标准库中的一个函数,用于生成一个 [0, RAND_MAX] 范围内的伪随机数。其中,RAND_MAX 是一个宏定义,通常为 32767。 在使用该函数之前,需要先调用 srand() 函数,来设置种子值,以便产生随机数序列。 随机数生成步骤…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部