首页 > 其他分享 >static静态局部变量

static静态局部变量

时间:2023-03-09 14:33:06浏览次数:28  
标签:函数 静态 局部变量 static fun 全局变量

static静态局部变量

1.static

1.1 分类

函数内部:用static关键字定义的变量称为静态局部变量
函数外部:用static关键字定义的变量称为静态全局变量

1.2 区别

静态局部变量只能在函数内部被调用

1.3 注意

在程序执行时,静态局部变量在内存的静态存储区中也占据永久性的存储单元。即退出函数后,再次进入该函数时,静态局部变量仍然使用原来的存储单元。
对于静态局部变量,初始化仅仅执行一次,如何理解这句话,例如:

void fun(){
    static int n;
    n++;
    printf("%d\n",n);
}

int main(){
    fun();
    fun();
    fun();

    return 0;
}

返回

1
2
3

如果对变量显式初始化呢?例如:

void fun(){
    static int n=1;
    n++;
    printf("%d\n",n);
}

int main(){
    fun();
    fun();
    fun();

    return 0;
}

返回

2
3
4

可见,无论调用几次函数,函数中的静态局部变量都只经历一次初始化

2.static全局变量与普通的全局变量

全局变量的说明之前再加以static 就构成了静态的全局变量。
全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。
区别:非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。而静态全局变量则限制了其作用域,即只在定义该变量的源文件内有效,在同一源程序的其它源文件中不能使用它。
从以上分析可以看出,把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。

标签:函数,静态,局部变量,static,fun,全局变量
From: https://www.cnblogs.com/noele/p/17198012.html

相关文章

  • 前端从0-1使用nginx打包部署静态资源,以及hash和history配置汇总
    第一:我们要搭建nginx部署基础环境具体流程可参考这个链接从0-1超详细教你实现前端代码nginx部署全流程第二:我们要知道前端路由hash和history实现以及区别路由功能:1、记......
  • LabVIEW|知识点:值属性节点、局部变量、数据连线三种方式的传递效率
    这是类似的线程切换导致效率低下的问题,出现在调用动态链接库的情况下,也出现在使用属性节点和方法节点时。比如,设置一个控件的值有三种常用方法。对于显示控件而言,可以直接通......
  • ES6-ES11 class静态成员
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>静态成......
  • C++笔记-static本地变量
    static本地变量只能被本地看到,所以不同函数之间的static变量相同也没事,但是同一个函数调用多次会忽略后面的初始化。#include<iostream>voidmyStaticFunction(){......
  • C++中的静态多态和动态多态
    今天学习C++时,发现C++中存在静态多态和动态多态静态多态=>也称为编译期多态=>基于模板编程的静态多态动态多态=>也称为运行期多态 =>面向对象的动态多态,它基......
  • Django项目部署到云端后静态资源无法加载
    1.Django项目在开发阶段一直都是在本地调试,开发的差不多了得部署到云端,然后整个项目打包到云端运行后访问,发现静态资源无法加载。之前seeting.py里面的配置如下:STATIC_UR......
  • Python 内置函数装饰器 classmethod staticmethod
    使用官方的说法:classmethod(function)中文说明:classmethod是用来指定一个类的方法为类方法,没有此参数指定的类的方法为实例方法,使用方法如下:classC:@classmetho......
  • # ASP.NET Core使用静态文件、目录游览与MIME类型管理
    ASP.NETCore使用静态文件、目录游览与MIME类型管理https://blog.csdn.net/sD7O95O/article/details/78994496前言今天我们来了解了解ASP.NETCore中的静态文件的处理方......
  • Qt 默认静态槽函数 connectSlotsByName浅析
    Qt默认静态槽函数connectSlotsByName浅析Qt中生成槽函数的方式在Qt中有3种生成槽函数的方式:第一种就是手动写connect连接函数,函数原型如下://connect(信号的发送者,......
  • 碎片 Fragment - 静态注册
    新建一个activity,命名为FragmentStaticActivity,如下publicclassFragmentStaticActivityextendsActivity{privatestaticfinalStringTAG="FragmentStaticAc......