C零散知识点汇总之static关键字

简介: C零散知识点汇总之static关键字

C零散知识点汇总之static关键字


一、Static的作用:

c语言中,static既可以修饰变量(全局变量和局部变量),又可以修饰函数。static类型的变量称为静态变量,如果不初始化则编译器自动初始化为0

static的用法有两种:

      1、修饰全局变量 或 函数,用于限定该变量或函数作用域为本文件。(这种限定是针对编译器而言,运行时没有区别)。

      2、修饰局部变量,用于修改变量的生存周期,维持持久性。

1. 局部静态变量

static修饰局部变量的时候,该变量的存储空间由栈变为静态区。变量的作用域仍然为局部的,但是离开作用域后,静态变量不会被销毁,而是仍然驻留在内存当中,直到程序结束。

如果将静态变量的指针传出后,在作用域之外仍然可以通过指针访问这个变量。再次调用函数的时候,这个静态变量仍然保持着上次时候的值。

2. 全局静态变量

全局静态变量也是储存在静态区,但是它的作用域仅为本文件。对于全局变量使用static,可以多个文件中使用相同名字的全局变量而不会发生名字冲突。

3. 静态函数

在函数定义前面加上static,限定该函数只在当前文件中可见。这样不同的文件可以使用相同名字的函数而不会发生混淆。

static j;
void fun1(void)
{
    static int i = 0;
    i++;
}
void fun2(void)
{
    j = 0;
    j++;
}
int main()
{
    int k = 0;
    for (k = 0; k < 10; k++) {
        fun1();
        fun2();
    }
    return 0;
}

最后i = 10, j = 1。

相关文章
|
6月前
|
C#
C#的类和对象的概念学习案例刨析
【5月更文挑战第17天】C#是一种面向对象的语言,以类和对象为核心。类作为对象的模板,定义了属性(如Name, Age)和行为(如Greet)。对象是类的实例,可设置属性值。封装通过访问修饰符隐藏实现细节,如Customer类的私有name字段通过Name属性访问。继承允许新类(如Employee)从现有类(Person)继承并扩展。多态让不同对象(如Circle, Square)共享相同接口(Shape),实现抽象方法Area,提供灵活的代码设计。
67 1
|
5月前
|
编译器 C++
C++初阶学习第四弹——类与对象(中)——刨析类与对象的核心点
C++初阶学习第四弹——类与对象(中)——刨析类与对象的核心点
25 0
|
5月前
|
存储 安全 编译器
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
C++进阶之路:探索访问限定符、封装与this指针的奥秘(类与对象_上篇)
45 0
|
编译器 C++
【C++精华铺】6.C++类和对象(下)类与对象补充及编译器优化
构造函数的初始化列表及其行为、static成员(函数,变量)、友元(函数,类)、内部类、匿名对象、对象拷贝时的编译器优化
|
Java
java多态进阶,吃透多态,这一篇就够了
1.动态绑定机制 java的动态绑定机制非常重要🎈 实例A 我们来看一个实例:
96 1
java多态进阶,吃透多态,这一篇就够了
|
编译器 C++
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(3)
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(3)
80 0
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(3)
|
安全 编译器 网络安全
一些碎碎念以及类和对象零碎知识点补充
一些碎碎念以及类和对象零碎知识点补充
105 0
一些碎碎念以及类和对象零碎知识点补充
|
存储 编译器 C语言
初阶C++——C++第二节——类和对象(大全篇)
万物皆对象。因为只要我们去研究它,它就成为我们的对象。在编程世界,其可以指所有的数据。并且该说法尤其是与类同时出现的频次较高。
79 0
初阶C++——C++第二节——类和对象(大全篇)
|
编译器 C++
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(2)
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(2)
94 0
【C++】—— 类和对象(中)一张图带你搞清楚6个默认成员函数+万字总结 复习全靠它(2)
下一篇
无影云桌面