限制作用域和保持状态

‌函数static的作用主要体现在限制作用域保持状态两个方面。‌‌1

限制作用域

  1. ‌静态全局变量‌:在全局变量前加上static关键字,该变量就被定义成为一个静态全局变量。这种变量只在定义该变量的源文件内有效,无法被其他源文件中的函数访问,从而避免了全局变量在不同源文件间引起的冲突。
  2. ‌静态函数‌:使用static修饰的函数只能在声明它的文件内部被调用,无法被其他文件中的函数调用。这有助于将一些辅助函数或实用函数限制在特定文件中,避免污染其他文件的作用域。

保持状态

  1. ‌静态局部变量‌:在一个函数中,由static修饰的局部变量在函数调用结束之后不会被销毁,而是保存原值继续存在。这使得静态局部变量在多次调用中能够保持状态,常用于记录函数调用次数或记录某个状态变化的场景。

具体应用场景

  • ‌静态全局变量‌:适用于需要在多个函数间共享数据,但又不想让这些数据在全局范围内可见的情况。例如,在一个大型项目中,某些配置信息或状态标志可以通过静态全局变量在不同的模块间共享,而不会引起命名冲突。
  • ‌静态函数‌:适用于一些辅助功能或实用功能,这些功能不需要在其他文件中被调用。通过将它们定义为静态函数,可以避免它们被误用,保持代码的清晰和模块化。
  • ‌静态局部变量‌:常用于需要记录函数调用次数或状态变化的场景。例如,在一个计数器函数中,使用静态局部变量来记录调用的次数,这样每次调用时都会增加计数器的值,而不是每次都从0开始。

函数static的作用的更多相关文章

  1. 成员变量和成员函数前加static的作用?

    成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数.分别用来反映类的状态.比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作 ...

  2. static的作用

    在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...

  3. IOS 本地推送 IOS10.0以上 static的作用 const的作用

    //需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...

  4. C/C++中static关键字作用总结

    来来来,来看这篇文章: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/19/2598815.html 总结一下: 1.先来介绍它的第一条也是最重 ...

  5. C++中static关键字作用总结

    1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件 ...

  6. 【C/C++】C/C++中Static的作用详述

    在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. ❶先来介绍它的第一条也是最重要的一条:隐藏.当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可 ...

  7. C语言中static的作用及C语言中使用静态函数有何好处

    转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...

  8. C、C++ static 的作用

    1.隐藏 当同时编译多个文件时,所有未加static关键字的全局变量和函数都具有全局可见性. 例如:同时编译两个源文件 //ghz.c #include <stdio.h> char a ...

  9. C语言中的static的作用?

    在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)第一个作用:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话 ...

  10. C 语言中 static 的作用

    在 C 语言中,static 的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函 ...

随机推荐

  1. 用 16G 内存存放 30亿数据(Java Map)转载

    在讨论怎么去重,提出用 direct buffer 建 btree,想到应该有现成方案,于是找到一个好东西: MapDB - MapDB : http://www.mapdb.org/ 以下来自:ko ...

  2. 【Javaweb】基础开发流程与介绍

    本文档写于2022年7月29日,由于个人水平有限,可能存在一些问题,因此仅供参考 @萌狼蓝天 JavaWeb基础开发流程 1.确定系统和功能 在此以"宠物管理系统"为例,要开发一个 ...

  3. 国产系统中标麒麟neokylin上的可视化大屏电子看板系统

    一.功能特点 采用分层设计,整体总共分三级界面,一级界面是整体布局,二级界面是单个功能模块,三级界面是单个控件. 子控件包括饼图.圆环图.曲线图.柱状图.柱状分组图.横向柱状图.横向柱状分组图.合格率 ...

  4. ABAP配置:OY01 定义国家/地区

    配置:OY01 定义国家/地区 事务代码:OY01 配置路径: SPRO-ABAP平台-常规设置-设置国家-定义国家/地区 配置路径截图: 配置描述: 国家是SAP里面一个非常重要的概念,SAP国家概 ...

  5. IdentityServer4中的核心类

    启动配置器IIdentityServerBuilder 可以把它理解为一个IServiceCollection的容器,它商品有几个扩展方法,方便我们用来注册ids使用到的相关服务,为啥不直接扩展ISe ...

  6. SpringCloud (五) - 云服务器Centos7.6,安装JDK,Maven,Mysql,Redis

    1.购买云服务器 购买地址:https://cloud.tencent.com/act/pro/2022double11_warmup 后面的环境都是基于此环境Centos7.6: 2.安装 Secu ...

  7. weixueyuan-Nginx集群9

    https://www.weixueyuan.net/nginx/colony/ LVS(Linux虚拟服务器)简介 LVS(Linux Virtual Server)是一个开源的负载均衡项目,是国内 ...

  8. nginx平台初探-2

    handler模块简介 相信大家在看了前一章的模块概述以后,都对nginx的模块有了一个基本的认识.基本上作为第三方开发者最可能开发的就是三种类型的模块,即handler,filter和load-ba ...

  9. 使用 pdf.js 通过文件流方式加载pdf文件

    关于Pdf.js的基础知识,请参考我的博客  使用 pdf.js 在网页中加载 pdf 文件 使用 pdf.js 跨域问题的处理方法 上面两篇博客中介绍的内容都是基于直接加载远程服务器中静态PDF文件 ...

  10. centos8网络配置问题

    由于RHEL8与centos8基本一样,所以以下方法同样适用于RHEL8 在centos8上进行网络配置时,出现以下问题: 意思是无法找到network.service 出现错误的原因是centos8 ...