函数static的作用
限制作用域和保持状态
函数static的作用主要体现在限制作用域和保持状态两个方面。1
限制作用域
- 静态全局变量:在全局变量前加上
static关键字,该变量就被定义成为一个静态全局变量。这种变量只在定义该变量的源文件内有效,无法被其他源文件中的函数访问,从而避免了全局变量在不同源文件间引起的冲突。 - 静态函数:使用
static修饰的函数只能在声明它的文件内部被调用,无法被其他文件中的函数调用。这有助于将一些辅助函数或实用函数限制在特定文件中,避免污染其他文件的作用域。
保持状态
- 静态局部变量:在一个函数中,由
static修饰的局部变量在函数调用结束之后不会被销毁,而是保存原值继续存在。这使得静态局部变量在多次调用中能够保持状态,常用于记录函数调用次数或记录某个状态变化的场景。
具体应用场景
- 静态全局变量:适用于需要在多个函数间共享数据,但又不想让这些数据在全局范围内可见的情况。例如,在一个大型项目中,某些配置信息或状态标志可以通过静态全局变量在不同的模块间共享,而不会引起命名冲突。
- 静态函数:适用于一些辅助功能或实用功能,这些功能不需要在其他文件中被调用。通过将它们定义为静态函数,可以避免它们被误用,保持代码的清晰和模块化。
- 静态局部变量:常用于需要记录函数调用次数或状态变化的场景。例如,在一个计数器函数中,使用静态局部变量来记录调用的次数,这样每次调用时都会增加计数器的值,而不是每次都从0开始。
函数static的作用的更多相关文章
- 成员变量和成员函数前加static的作用?
成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数.分别用来反映类的状态.比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作 ...
- static的作用
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有 ...
- IOS 本地推送 IOS10.0以上 static的作用 const的作用
//需要在AppDelegate里面启动APP的函数 加上 UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNot ...
- C/C++中static关键字作用总结
来来来,来看这篇文章: http://www.cnblogs.com/biyeymyhjob/archive/2012/07/19/2598815.html 总结一下: 1.先来介绍它的第一条也是最重 ...
- C++中static关键字作用总结
1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可) 当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件 ...
- 【C/C++】C/C++中Static的作用详述
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. ❶先来介绍它的第一条也是最重要的一条:隐藏.当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可 ...
- C语言中static的作用及C语言中使用静态函数有何好处
转自:http://www.jb51.net/article/74830.htm 在C语言中,static的作用有三条:一是隐藏功能,二是保持持久性功能,三是默认初始化为0. 在C语言中,static ...
- C、C++ static 的作用
1.隐藏 当同时编译多个文件时,所有未加static关键字的全局变量和函数都具有全局可见性. 例如:同时编译两个源文件 //ghz.c #include <stdio.h> char a ...
- C语言中的static的作用?
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)第一个作用:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话 ...
- C 语言中 static 的作用
在 C 语言中,static 的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加 static 前缀的全局变量和函 ...
随机推荐
- S2P销讯通-SFE人才对企业管理层至关重要
SFE这一概念,最初由外资企业引入,如今已逐渐被内资企业所采纳并融入其组织结构中,不少企业正积极构建这一部门. 1 我们观察到,近两年企业内对于SFE部门所需的人才需求急剧上升.这一部门,在外资企业中 ...
- element-ui el-dialog中套el-dialog被遮罩遮盖的问题
添加 append-to-body 属性 具体见官方文档 入口
- GitLab的备份与恢复
一.备份 1. docker执行备份 docker exec gitlab gitlab-rake gitlab:backup:create 默认将备份文件保存至docker的/var/opt/git ...
- flutter问题汇总
Text文字居中 Text( 'You will need to post a photo before you can play!', textAlign: ...
- 【PHP】读取本地文件夹中所有图片并显示
<? //获取文件夹下的所有文件 $dir_str = ''; $imgType = array('gif','png','jpg','jpeg','bmp'); $handle = opend ...
- Vscode实现应用qss样式表
qss简介 qss(Qt Style Sheets)是一种基于CSS的样式语言,用于描述用户界面元素的外观和感觉.qss可以让用户在不修改代码的情况下,轻松地自定义应用程序的外观. 其语法基本如下: ...
- UDP与TCP+JAVA相关理论
相关知识 目录 相关知识 UDP UDP认识 UDP的特点(与TCP相比) UDP网络Socket编程(Java实现) 1.创建客户端 2.客户端图形界面 TCP Socket编程通信 JAVA 基础 ...
- [转]为什么VS提示SurfFeatureDetector不是cv的成员函数
surf和sift算法都是在头文件#include <opencv2/features2d/features2d.hpp>中,但在新的opencv版本出来后,如果仍然使用这个头文件就会出现 ...
- JS利用浏览器进行语言识别
JS利用浏览器进行语言识别 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...
- 基于Tablestore打造亿量级订单管理解决方案
一.方案背景 订单系统存在于各行各业,如电商订单.银行流水.运营商话费账单等,是一个非常广泛.通用的系统.对于这类系统,在过去十几年发展中已经形成了经典的做法.但是随着互联网的发展,以及各企业对数据的 ...