限制作用域和保持状态

‌函数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. whisper v3 finetune 中文乱码问题的解决方案

    最近学习了一下whisper的微调,主要是参考了github上的夜雨飘零大神项目.但是在操作中遇到了微调中文的时候出现了乱码的情况.以下是我这边对于微调过程中中文出现乱码情况的解决方案. 出现情况如下 ...

  2. bitmap的特性和应用

    BitMap 是什么? BitMap 简称位图,实际上是一个散列表,只不过这个散列表中各个槽是计算机存储中的最小单元bit. 那BitMap数据结构长什么样呢? 一个长度为8的BitMap是下面这样的 ...

  3. 2024年1月Java项目开发指南18:自定义异常输出

    一般情况下,报错信息一大堆,值得注意的只有三个地方: 哪个文件发生了错误 哪一行发生了错误 错误原因是什么 只要知道这三个东西就能快速的定位到错误发生的位置并且根据提示解决. 如果你也喜欢我的这种异常 ...

  4. GenericObjectPool 避免泄漏

    GenericObjectPool GenericObjectPool 是 Apache Commons Pool 提供的对象池,使用的时候需要调用 borrowObject 获取一个对象,使用完以后 ...

  5. opencv只在bin目录下编译dll,在lib目录下编译lib,在bin目录下不编译测试程序的各种exe

    penCV是一个开源的计算机视觉库,它提供了多种编程语言的接口.如果你只想编译出DLL和Lib库文件,而不编译EXE(可执行文件),这通常是因为你想要进行某种形式的动态链接或者库的分发,而不关心EXE ...

  6. 【刷题】牛客模拟面试 > 模拟面试报告

    https://www.nowcoder.com/interview/ai/index 1-TCP协议的流量控制和拥塞控制 TCP的流量控制是基于窗口机制实现的: 在建立连接时, 发送方和接收方都会建 ...

  7. Golang-函数5

    http://c.biancheng.net/golang/func/ Go语言函数(Go语言func) 函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func.函数名.参数列 ...

  8. cmake-2

    似懂非懂,一定要搞懂基础的,剩下的边做边学,从案例中入手. 有关cmake的介绍,请参考: 1.https://www.cnblogs.com/pam-sh/p/13885959.html 2.htt ...

  9. uni-app使用阿里矢量字体图标

    在app.vue下,引入 <style> @font-face { font-family: 'iconfont'; /* project id 1951514 */ src: url(' ...

  10. 天翼云弹性高性能计算Portal简介

    本文分享自天翼云开发者社区<天翼云弹性高性能计算Portal简介>,作者:小燕同学 1.平台概述 天翼云官网已上线公有云弹性高性能计算(EHPC)产品,公有云EHPC产品主要由管理员控制, ...