static关键字

广义平均(Generalized Mean, GeM) 本位介绍了广义平均操作的定义和简要推导,帮助大家理解其含义。 阅读详情

先从内存说起,最精简的嵌入式系统也要划分出以下这些section:

代码段

全局数据段

堆

栈

 

再说c++里面的static关键字,分五个部分:

1. 静态全局变量

2. 静态局部变量

3. 静态数据成员

4. 静态非成员函数

5. 静态成员函数

 

1. 静态全局变量

static关键字放在全局变量前面,这个全局变量就是静态全局变量了。

static int A; 后面A就是1类型的静态全局变量的代名词了

(1) A所占用的内存在全局数据段

(2) 要想使用A的文件就要先在文件内声明A,不声明则对于该文件A既不可见亦不可用

extern int A;  // 声明static int A

(3) 在声明了A的文件中,允许定义A同名变量,但是要注意编译器允许并不意味着不会出现运行时错误,建议还是不要做这样的定义。

 

2. 静态局部变量

static关键字放在局部变量前面,这个局部变量就是静态局部变量了。

static int B; 后面用B代名2类型的静态局部变量

(1) 加上了static关键字,B就从栈上搬家搬到了全局数据段,并在程序运行期内始终驻留全局数据段

(2) 加上了static关键字,B的作用域并不发生改变

举个例子:

#include <iostream>

void sum();

void main()

{

        int i;

        for(i=0; i<10; i++)

        {

                if (i % 2)

                    sum();

        }

        int B;

        B = i;

        cout << "B = " << B << endl;

}

void sum()

{

        static int B = 0;

        B++;

        cout << "static B = " << B << endl;

}

执行结果是:

static B = 1

static B = 2

static B = 3

static B = 4

static B = 5

B = 10

 

3. 静态数据成员

static关键字放在数据成员前面,这个数据成员就是静态数据成员了。

(1) 静态数据成员所占的内存在全局数据段

(2) 静态数据成员只有一份拷贝,无论类有多少个实例。我们知道声明不会分配空间,因此,不允许在类声明的时候初始化静态数据成员。但是也因为只有一份拷贝,因此适用于对象的共同属性变量,节省空间又方便修改。

(3) 初始化静态数据成员的方法

class A

{

public:

        static int s_a;

        ... ...

private:

        ... ...

};

int A::s_a = 100; 

(4) 静态数据成员是属于类的,即使没有实例,一样可以被访问,其也一样遵从public,protected,private规则

(5) public的静态数据成员a可以通过下面两个方法访问

A::s_a  或者 a.s_a  (a是A的一个实例)

 

4. 静态非成员函数

在非成员函数的前面加上static,非成员函数就变成了静态非成员函数。

(1) 在声明了静态非成员函数的文件内,可以使用静态非成员函数,而对于其他文件,静态非成员函数是不可见的

(2) 因为(1),所以不同文件可以有同名的静态非成员函数

 

5. 静态成员函数

成员函数前面加上static,成员函数就变成了静态成员函数。

(1) 静态成员函数只属于它所在的类,而不属于、不联系任何一个类的实例,因此既不能被this指针指向,也不能通过this指针访问类的其他非静态数据成员

(2) 静态成员函数能调用的只有类的其他静态成员函数,以及类的静态数据成员

(3) 但是类的其他非静态成员函数可以访问静态成员函数,public的静态成员函数还可以被类外的代码访问调用

(4) 调用方法

类名::静态函数名(参数)

Aspice的理解 ASPICE 是由汽车行业的主要公司和组织合作开发的,包括德国汽车工业联合会(VDA)和国际汽车工作组(Automotive SIG)。其目标是通过标准化的软件开发流程,提高汽车电子系统的软件质量和可靠性。 阅读详情

相关推荐

Ubuntu 24.04 安装 ROS2 Jazzy

手把手教你在Ubuntu24.04上安装JazzyROS2操作系统。

weixin_74185504的博客 1万+

关键字static的作用

1、 关键字static的作用是什么? 正确答案: 这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用: 1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。 2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3). 在模块内,一个被声明为静态的函数只可被这...

zzyzgg的博客 6万+

企业级AI项目落地实战指南

企业级 AI 项目落地需构建“分阶段实施 + 多维度风控”的双轮驱动体系:实施端通过 POC 验证技术可行性、试点建立评估标准、规模化实现价值复制,各阶段需结合行业案例(如东阳光药、旺盈集团)提炼可复用经验;风险端则需覆盖技术(数据安全、模型稳定性)、合规(全球监管动态)、组织(人才与文化)维度,通过工具化框架(AI TRISM)与案例策略(邮储银行可解释性设计、拓斯达培训体系)实现风险可控。最终通过“场景聚焦 - 合规嵌入 - 持续优化”的循环机制,实现 AI 技术从“试点成功”到“全面价值创造”的跨越。

2509_93209761的博客 1437

static关键字详解

1.概述: static:就是多个对象共享同一份数据 一个类的不同对象有些共享的数据,这样我们就可以使用static来修饰 一旦使用了static关键字,那么这样的内容不再属于对象,而是属于类的,所以凡是本类的对象,都共享同一份。 可以用来修饰成员变量,修饰成员方法,以及静态代码块儿。 2.修饰成员变量: 如果一个成员变量使用了static关键字,那么这个变量不再属于对象自己,而是属于所在的类,多个对象共享同一份数据。 ...

liuzf123的博客 1万+

新手避坑指南:HT7036计量芯片SPI读取电压的完整流程(从复位到校准)

本文详细介绍了HT7036计量芯片的SPI读取电压完整流程,从硬件准备到校准设置,重点解析了复位引脚处理、SPI通信配置、芯片初始化及数据处理等关键步骤。针对常见问题如晶振焊接、SPI时序错误等提供实用解决方案,帮助开发者高效完成电压测量与校准。

weixin_30070339的博客 326

技术面试官视角:复盘北航/中科院/哈工大保研机试与面试,他们到底在考察什么?(附真题回忆与评分侧重点)

本文从技术面试官视角解析北航、中科院、哈工大等顶尖院校保研机试与面试的考核逻辑,揭示编程语言限制、题目难度设计等隐藏考察维度,并提供真题回忆与评分侧重点。帮助考生理解面试官的真实意图,掌握应对策略,提升通过率。

weixin_42549496的博客 518

Static关键字

本文详细阐述了 Java 中的 static 关键字,涵盖其作用、使用场景、注意事项和实际应用。介绍了静态变量、方法、代码块和内部类,通过 Counter 类展示静态变量计数功能,MathUtils 类说明静态方法调用,Example 类呈现静态代码块执行及变量初始化。阐述了单例模式的 static 实现,分析了内存优化示例,指出将 Chinese 类的 country 改为静态变量可节省内存。探讨空指针异常发生情况,强调静态方法不能直接访问实例成员及正确访问方式,解释静态代码块的特点、语法、执行顺序和使用

m0_73941339的博客 1608

(三) Debian 安装linuxcnc-ethercat中间件

1.在这里同样的也是需要下载一下依赖包 sudo apt install linuxcnc-uspace-dev 2.依赖包安装完成, 接着执行下面命令 sudo git clone https://github.com/sittner/linuxcnc-ethercat 还是可能出现下载网络错误下载不成功,可以直接下载我已上传百度云linuxcnc目录下 注意一下,后面make可能会出现头文件(xxx.h)的报错提示,在这里给大家一个处理办法 用aptitude 工具可以搞定 sudo apt-get

qq_30065813的博客 828

static关键字的作用详解

平时工作中static关键字出现的地方挺多的,但是要我说出他们的用法跟区别我还真不知道怎么说,这里系统性的整理下。 static关键字的作用(修饰类、方法、变量、静态块) 1、修饰函数的局部变量: 特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局 2、修饰全局函数和全局变量: 特点:只能在本源文件使用 3、修饰类里面的成员变量: 特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接调用,要进行外置声明) 4、修饰.

酷爱编程的小猿同学 9427

YOLOv8高级应用实战:多目标跟踪+实例分割+小样本检测(工业/安防场景落地指南)

安防监控中,需要跟踪多个行人的运动轨迹,而不只是框出“这是行人”;工业质检时,要精确分割出零件的缺陷区域(像素级),而不是只给一个粗略的矩形框;罕见场景下(如特殊故障检测、稀有动物识别),只能收集到几十张样本,普通训练方法精度惨不忍睹。我在落地工业安防和质检项目时,把YOLOv8的高级功能摸了个遍,踩过“多目标跟踪遮挡丢帧”“实例分割边缘模糊”“小样本检测过拟合”等一系列坑,最终总结出这套可直接复用的实战方案。多目标跟踪(ByteTrack)、实例分割、小样本检测。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 750

自建 HTML获取腾讯六宫格点选图片验证码素材,实现刷新批量获取图片方便训练

通过自建 HTML 页面,可以方便地获取腾讯六宫格二维码素材,不仅过程简单,而且可以灵活配置各种参数。希望这篇文章能帮助到需要相关素材的小伙伴。如果你有其他问题或者更好的方法,欢迎留言交流!

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 486

Static关键字详解

Static关键字详解

2301_81453175的博客 859

微信支付PHP集成指南

完整实现建议参考微信支付官方文档,包含更多支付场景(H5支付、Native支付等)和安全性处理细节。微信支付在PHP中的集成主要涉及服务端接口的调用和支付流程的实现。

bqq506615054的专栏 155

JavaSE之static关键字

这个案例主要讲的是,每一个学生都要对老师讲一遍早上好,我们分析一下这个简单案例,这个早上好是不是只是个动作,而且我们是不是需要全体同学都做这个动作,所以这个时候很容易想对我们的工具类,因为使用一个工具类可以代替这一复杂的操作,就不用n个同学调用n次方法了(其实使用实例方法,写个数组循环,从代码角度上简洁了,但是还是调用n次方法,但是上面的案例就不会,都是在用同一静态方法)。所以这就是静态方法的用处,当然我的例子简单,只是为了说明一些问题,如果遇到的复杂的动作,实际上抽象出来的静态方法更能体现价值!

weixin_56036523的博客 1141

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Java的static关键字

static关键字的特点,适用场景以及注意事项

weixin_45927386的博客 783

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【面经】static关键字总结

static中文意思是静态的,是C/C++中常见的一个关键字。它一般用于修饰变量(局部变量/全局变量)和函数。对于变量来说,static关键字用来控制变量的存储方式,作用范围和生命周期。下面我们分别在C语言和C++中讨论static的用法。

c565114的博客 1112

static 关键字详解

static 方法就是没有 this 的方法。在 static 方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用 static 方法。这实际上正是 static 方法的主要用途。——《Java编程思想》

格物致知,知行合一。 802

java static关键字的作用是什么_static关键字有什么作用

今天主要学习下Java语言中的static关键字。static关键字的含义及使用场景static是Java50个关键字之一。static关键字可以用来修饰代码块表示静态代码块,修饰成员变量表示全局静态成员变量,修饰方法表示静态方法。(注意:不能修饰普通类,除了内部类,这是为什么?)class A {static {System.out.println("A : 静态代码块");}static in...

weixin_42681774的博客 2178

关于static关键字的总结;

static与类直接相关; static属于类中的特权阶级; 什么时候用它; 学英语时间到了; 类中的关键字static比较常见,最近仔细研究了下, 对其特性进行了如下总结: - static与类直接相关 ; - static成员属于java中的特权阶级; - 什么时候用它; - static这个英语单词值得研究研究; static与类直接相关; 只要是...

weixin_42057052的博客 506

Static关键字的详解

static定义共享数据(静态变量);实现工具方法(静态方法);执行类初始化逻辑(静态代码块);定义独立于外部类实例的内部类(静态内部类)。合理使用static可以简化代码、提高效率,但需注意其对代码灵活性和线程安全的影响。

m0_64630668的博客 570

[java] static关键字总结

Table of Contents 概述 修饰类的变量 修饰方法 修饰代码块 静态导入包 用法 static关键字与java内存 概述 static 在java体系里的地位:java语言的一个修饰符,属于非访问修饰符,所谓访问修饰符就是控制访问权限的修饰符,如public,protected,private,default 再来看看static翻译成中文的意思:静止...

topdeveloperr的博客 1635
上一篇: 继续说初始化列表
下一篇: UML模型元素
phoebin
博客等级 码龄19年 76粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值