static的常见用法

news2024/9/27 12:12:02

参考链接:https://blog.csdn.net/guotianqing/article/details/79828100

C语言

作用:提高代码的模块化,提高代码的可读性。

  • 普通的局部变量:在最开始的时候不会进行初始化,存储在栈空间,使用完毕就会释放。
  • 静态局部变量(添加static):编译器自动将其初始化为0。存放在全局数据区,作用域是局部作用域,在定义的函数结束时作用域随之结束。相对普通的变量它存在的时间更长。
  • 全局变量:定义在函数体外,存放在全局数据区,作用域是整个文件,添加extern后作用于整个工程。静态全局变量仅对当前文件可见。在全局变量中添加static可以有效的降低文件之间变量的耦合。
  • 函数:和全局变量类似,静态函数只能在声明它的文件中可见。但是普通函数在其他的文件中使用不需要添加extern。

测试代码:

#include <iostream>

using namespace std;

void test1_fuc(){
	static int num;
	num++;
	cout << "static num " << num << endl;
} 

void test2_fuc(){
	int num;
	num++;
	cout << "num " << num << endl;
}
int main(){
	test1_fuc();
	test2_fuc();
	test1_fuc();
	test2_fuc();
	test1_fuc();
	test2_fuc();
	return 0;
} 

在这里插入图片描述

C++

在c++中有了类的概念,在类内数据成员的声明前加上static关键字,就是类内的静态数据成员。
特点:

  1. 存放位置:全局数据区
  2. 在定义时进行内存分配,所以不能在声明中定义。
  3. 对于多个对象只有一份拷贝。所以多个类可以对一个数据进行操作。(普通变量每个对象都是新的,都有一份拷贝)
  4. 静态数据成员不属于任何对象,没有类的实例作用域也可见,没有任何对象时,也可以进行操作
  5. 访问规则和普通成员一样。public, protected, private
  6. 初始化:<数据类型><类名>::<静态数据成员名>=<值>
  7. 访问:<类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
  8. 优点:避免全局变量的耦合,可以是私有成员。
  • 静态成员函数

特性如下:

  1. 与静态数据成员类似,静态成员函数属于整个类,而不是某一个对象
  2. 没有this指针,无法访问属于类对象的非静态数据成员,也无法访问非静态成员函数,只能调用其余的静态成员函数
  3. 出现在类体外的函数定义不能指定关键字static

非静态成员函数可以任意地访问静态成员函数和静态数据成员

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/487532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

100ASK_全志V853-PRO开发板 环境配置及编译烧写

0.前言 本章主要介绍关于100ASK-V853-PRO开发板的Tina SDK包的下载和编译打包生成镜像&#xff0c;并将镜像烧录到100ASK-V853-PRO开发板上。在进行100ASK-V853-PRO开发板的环境配置前需要获取配置虚拟机系统&#xff0c;可以参考&#xff1a;https://dongshanpi.com/Dongshan…

「蓝桥杯」扫地机器人

扫地机器人 题目描述 小明公司的办公区有一条长长的走廊&#xff0c;由 N 个方格区域组成&#xff0c;如下图所示。 走廊内部署了 K 台扫地机器人&#xff0c;其中第 i 台在第 A_i 个方格区域中。已知扫地机器人每分钟可以移动到左右相邻的方格中&#xff0c;并将该区域清扫干…

图的着色学习

图的边着色 排课表问题&#xff1a;设有m位教师&#xff0c;n个班级&#xff0c;教师xi要给班级yj上pij节课&#xff0c;求如何在最少节次排完所有课。 图论模型&#xff1a;令X{x1,x2,…,xm}&#xff0c;Y{y1,y2,…,yn}&#xff0c;xi与yj间连pij条边&#xff0c;得偶图G(X,…

【prism系列】子窗口中如何实现区域(Region)管理

前言 在之前系列文章《Region的用法》中&#xff0c;我提到无法在子窗口中实现区域管理&#xff0c;最近经过尝试发现其实是可以的&#xff0c;只是少了一个步骤而已&#xff01;Region具体细节还请参考这篇。 【Prism系列】Region的用法_prism region_code bean的博客-CSDN博…

一文全览各种 ES 查询在 Java 中的实现

ElasticSearch 进阶&#xff1a;一文全览各种 ES 查询在 Java 中的实现 以下为摘录自用&#xff0c;非本人撰写 本文基于elasticsearch 7.13.2版本&#xff0c;es从7.0以后&#xff0c;发生了很大的更新。7.3以后&#xff0c;已经不推荐使用TransportClient这个client&#xf…

浅谈自动驾驶技术

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

【Linux】5. 开发工具的使用(gcc/gdb/makefile)

Linux编译器-gcc/g使用 1. 复习编译链接过程 2. 理解选项当中的含义 这些选项难记住&#xff0c;怎么办&#xff1f; – ESc - iso(对应) gcc选项 -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面-S 编译到汇编语言不进行汇编和链接-c 编译到目标代码-o …

基于OpenHarmony开发的健康生活应用(ArkTS)

健康生活应用&#xff08;ArkTS&#xff09; 介绍 本篇Codelab介绍了如何实现一个简单的健康生活应用&#xff0c;主要功能包括&#xff1a; 用户可以创建最多6个健康生活任务&#xff08;早起&#xff0c;喝水&#xff0c;吃苹果&#xff0c;每日微笑&#xff0c;刷牙&#…

【python语法大练习】【题库】Python 基础练习题库大全

【题库】Python 基础练习题库大全 编程题1. 从键盘输入两个数&#xff0c;求它们的和并输出2. 从键盘输入三个数到a,b,c中&#xff0c;按公式值输出 (input().split())3. 输出“人生苦短&#xff0c;我学Python”4. 计算 111213...m (sum函数)5. 计算分段函数[1] (format)6. 阶…

Ubuntu连接Xshell

Ubuntu连接Xshell 1、安装ssh&#xff0c;开启服务 1、安装ssh sudo apt-get install openssl-server 2、启动ssh服务 /etc/init.d/ssh start 3、修改文件&#xff0c;允许远程登陆 sudo vi /etc/ssh/sshd_config PermitRootLogin prohibit-password #默认为禁止登录 PermitR…

ESP-IDF中的event loop library事件循环库

文章目录 简介事件循环库的使用示例&#xff1a; 简介 Event Loop Library是一种信号传递机制&#xff0c;事件循环库允许组件声明事件&#xff0c;其他组件可以向其注册处理程序——当这些事件发生时将执行的代码。这允许松散耦合的组件将所需的行为附加到其他组件的状态更改…

华为OD机试(20222023)真题目录 + 考点 + 通过率

目录 华为OD机试是什么&#xff1f;华为OD面试流程&#xff1f;华为OD机试通过率高吗&#xff1f;华为OD薪资待遇&#xff1f;华为OD晋升空间&#xff1f;华为OD刷题列表&#xff0c;一天三题&#xff0c;刷出算法新高度&#xff0c;刷出人生新际遇。 大家好&#xff0c;我是哪…

基于Hebb学习的深度学习方法总结

基于Hebb学习的深度学习方法总结 0 引言1 前置知识1.1 Hebb学习规则1.2 Delta学习规则 3 SoftHebb学习算法3.1 WTA(Winner Take All)3.2 SoftHebb3.3 多层Hebb网络3.4 Hebb学习的性能测评 参考文献 0 引言 总所周知&#xff0c;反向传播算法&#xff08;back-propagating, BP&…

你想要的【微前端】都在这里了! | 京东云技术团队

作者&#xff1a;京东零售 郑炳懿 开篇&#xff1a; 如果你不知道微前端是什么&#xff0c;或者不知道微前端能解决什么问题&#xff0c;那么你可能不需要微前端。 在我看来&#xff0c;对于每一个没有使用过的新技术&#xff0c;都应该有以下几个过程&#xff1a; 1、调研…

【Android签名文件META-INF】

android安装包apk中&#xff0c;有一个META-INF文件夹&#xff0c;该文件夹下面必须有以下几个扩展名的文件&#xff1a;.SF&#xff0c;.RSA&#xff0c;*.MF。一般为MANIFEST.MF&#xff0c;包名.SF&#xff0c;包名.RSA&#xff08;也有可能是EC或者DSA&#xff09;。 其中…

聊聊ClickHouse向量化执行引擎-过滤操作

俄罗斯Yandex开发的ClickHouse是一款性能黑马的OLAP数据库&#xff0c;其对SIMD的灵活运用给其带来了难以置信的性能。本文我们聊聊它如何对过滤操作进行SIMD优化。 基本思想 1、有一个数组data&#xff0c;即ColumnVector::data&#xff0c;存放数据 2、使用uint8类型&#xf…

Metasploit渗透测试:工作区使用帮助

目录 ​编辑 help 查看工作区 添加工作区 显示工作区详情

《智能手机心率和呼吸率测量算法的前瞻性验证》阅读笔记

目录 一、论文摘要 1.背景 2.方法 3.结果 4.结论 二、论文十问 Q1&#xff1a;论文试图解决什么问题&#xff1f; Q2&#xff1a;这是否是一个新的问题&#xff1f; Q3&#xff1a;这篇文章要验证一个什么科学假设&#xff1f; Q4&#xff1a;有哪些相关研究&#xff…

No.046<软考>《(高项)备考大全》【专项2】《案例分析 - 计算题(中)》

案例分析 - 计算题&#xff08;中&#xff09; 章节其他部分3 成本管理3.1 挣值分析3.1.1 概念3.1.2 公式3.1.3 参数关系3.1.4 题目 3.2 挣值管理3.3 预测3.3.1 ETC(完成尚需估算)3.3.2 EAC(完工估算)3.3.3 BAC(完工预算) 3.4 绩效审查 章节其他部分 案例分析 - 计算题&#x…

27从零开始学Java之详解复杂的二维数组与多维数组

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦 千锋教育高级教研员、CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者 前言 在前几篇文章中&#xff0c;壹哥给大家介绍了Java里的一维数组&#xff0c;涉及到了数组的创建初始化…