简述C++中static的几种用法

c++中static的用法详解 C 语言的 static 关键字有三种(具体来说是两种)用途: 1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。 int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i; } 要明白这个用法,我们首先要了解c/c++的内存分布,以及static所在的...... 阅读详情

1、修饰局部变量,只执行一次初始化,延长了局部变量的生命周期,在程序结束的时候才释放。

2、修饰全局变量,此变量只能在当前的文件中访问,其它文件不可访问,即使是extern也不行。(建议使用隐式命名空间)

3、修饰普通函数(非成员函数),只能在当前文件中访问,不可在其它文件中调用。

4、修饰成员变量,类的所有实体对象共享这个变量。

5、修饰成员函数,在该函数中只能调用静态变量和静态函数。

掌握C++中static关键字的用法 C++中的static关键字是一个非常强大的工具,它在多个方面对变量和函数的作用域、生命周期和链接属性进行控制。本章将简要介绍static关键字的概念和用途,为后续章节中更深层次的探讨奠定基础。全局变量是在函数外部定义的变量,它在整个程序的任何部分都可以被访问到。与局部变量不同,全局变量的生命周期贯穿整个程序执行过程,除非被显式地销毁或者程序结束。在全局变量前加上static关键字,就会限定该变量的作用域仅在定义它的文件内。也就是说,即使其他文件包含相同的头文件,他们也无法访问该变量。 阅读详情

相关推荐

(04730)半导体器件之基本放大器工作原理(一)

放大器是构成各种电子线路的基本单元电路。所谓“放大”,就是将输入的微弱信号(微弱变化的电压或电流等)去控制直流电源提供的能量,并使输出按照输入的小信号变化规律而变化的过程。所以放大器的本质是能量转换器。本节重点学习基本放大电路的工作原理和基本分析方法及主要性能指标。

黄先生的博客 3006

C++ static用法总结

要理解static关键字在C++中的所有作用,首先要明白程序所使用的不同内存区域的作用。C++程序运行时使用三种内存,一种是static内存,还有一种是stack内存,以及heap内存(动态内存池)。

kupePoem的专栏 2877

银行客户投诉预测模型优化

在实际操作中,银行可以使用这个优化后的模型来识别那些可能引起客户不满的因素,并采取预防措施。例如,如果模型表明退款金额是一个很强的预测因子,银行可能会审查其退款政策,以确保它对客户是公平和透明的。在银行业务中,客户投诉是一个重要的指标,它直接关系到客户满意度和银行服务质量。某一个指标,比如:退款金额,本文假设退款金额对于预测投诉的权重应该高于赔偿金额。在每次迭代中,本文使用当前的权重组合来训练模型,并计算在测试集上的准确率。的可能值来搜索最佳的权重组合,并输出最佳准确率及对应的权重。来寻找最佳的权重组合。

weixin_57499254的博客 1707

static在 C++ 中的四种用法

但是注意,静态成员函数无法访问类的非静态成员变量,因为这些变量是与类的实例关联的,而静态成员函数不属于任何具体的类的实例。在这种情况下,我们不能直接传递一个非静态成员函数,因为非静态成员函数需要一个隐含的 this 指针,而我们在创建线程的时候不能提供这个 this 指针。上述代码不能正确运行,因为bar是一个非静态成员函数,而在startThread函数中,我们无法给出这样一个上下文。因为非静态成员函数需要一个对象的上下文(也就是this指针),而在这个例子中,我们并没有提供这样的上下文。

CFY1226的博客 3677

图像质量评估(5) -- 畸变(Distortion)

当图像中原本应该是直线的地方看起来发生了不自然的变形或扭曲时,我们称为图像畸变。有三种类型的镜头畸变:桶形畸变(后文使用英文barrel),枕形畸变(后文使用pincushion)和胡子畸变(后文使用英文wavef或mustache,这种畸变里包含了桶形畸变和枕形畸变)。有一个重要的点需要注意,根据透镜的类型以及透镜是否能够从相机中移除等条件不同,畸变会有不同的表现。 总的来说,旋转对称光学系统功能上会产生和物体几何相似的图形。但也有少数特殊的系统是例外,例如鱼眼镜头,这种镜头几何是故意设计为

vivo01的专栏 2万+

人机协作新纪元:AI会抢走IT人的饭碗吗?

产品经理用自然语言描述需求,AI将其转化为技术规格书(准确率已达89%)

819

细说C++(十六):static用法-全解析

static static修饰局部变量时,使得被修饰的变量成为静态变量,存储在静态区。存储在静态区的数据生命周期与程序相同,在main函数之前初始化,在程序退出时销毁。(无论是局部静态还是全局静态) 局部静态变量使得该变量在退出函数后,不会被销毁,因此再次调用该函数时,该变量的值与上次退出函数时值相同。值得注意的是,生命周期并不代表其可以一直被访问,因为变量的访问还受到其作用域的限制。 s...

GeniusIOTboy的博客 984

从大疆智图到Cesium:3D Tiles模型加载与Web三维场景构建实战

本文详细介绍了如何利用大疆智图生成3D Tiles数据,并通过Cesium在Web端实现高效加载与三维场景构建。从大疆智图参数设置到Cesium环境配置,再到3D Tiles性能调优与高级功能实现,提供了一套完整的实战指南,帮助开发者快速掌握3D Tiles模型加载与Web三维场景构建技术。

weixin_30520015的博客 1285

C/C++中static关键字用法总结

在使用关键字static的时候,我们需要注意一下几个原则:被static修饰的变量的存储位置都在静态区,且生命周期延长至整个程序运行结束。static具有隔离作用,被static修饰的全局变量和全局函数的作用域由全局变为当前文件。静态变量虽然具有全局变量的生命周期,但只能作用于自己的作用域。普通静态成员需要在类的外面进行初始化。静态成员函数不能调用类的非静态成员,包括非静态成员和非静态成员函数。

红军不怕远征难,万水千山只等闲 1496

解决Windows 10安装语言包时遇到的0x800F0954错误

在安装Windows 10操作系统的语言包时,如果遇到错误代码0x800F0954的提示,这无疑会让许多用户感到困惑和无助。这个错误通常意味着在安装过程中遇到了一些阻碍,导致无法正常完成语言包的安装。本文将为大家详细解析这个错误代码0x800F0954,并提供一系列有效的解决方法,帮助大家顺利安装所需的语言包。

nntxthml的博客 3793

高云FPGA系列教程(4):片上逻辑分析仪GAO的使用

STM32等单片机,使用J-Link或ST-Link等调试器,可以进行在线调试,由于C代码是顺序执行的,我们可以插入断点,让程序停在我们需要的位置,或者是实时查看一些变量的数值,大大提高了我们Debug的速度,提高产品的开发效率。,连接到FPGA芯片的外部管脚上,如果想查看内部信号,还需要把这些信号定义成Output引出到外部管脚进行了测量,如果是多位数据,这样就会占用大量的管脚,但是此类工具有个优点就是支持多种协议解析,可以非常方便的查看协议的报文数据。当所有的仿真没问题了,才能进行最后一步:板级调试。

whik1194的博客 5029

【C++】const和static的用法

本文介绍了C++中const与static关键字的用法及其结合应用。const主要用于限制变量/对象的可修改性,包括修饰普通变量、指针、函数参数/返回值、类成员和对象等场景。static则用于改变变量/函数的存储周期或作用域,包括修饰全局变量、局部变量以及类成员变量/函数。两者的结合应用主要体现在"类的静态常量"(static const)上,用于定义类级别的共享且不可修改的常量。文章通过具体代码示例详细说明了各种用法,帮助读者理解这两个关键字的正确使用方式。

2402_88461821的博客 1536

启动launch文件时显示找不到franka_ign_ros2_control-system...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 695

C++ 中static的用法

不管是 C,C++,它们中都包含 static。当然这其中的用法及作用也是不一样的。下面主要介绍 static 在 C++ 中的用法: 要理解 static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是 auto,其实我们通常声明的不用 static 修饰的变量,都是 auto 的,因为它是默认的,就象 short 和 long 总是默认为 int 一样;我们通常声明一个变量: int a; string s; 其实就是: auto int a; auto s

qq_43169752的博客 4806

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

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

C++static_cast用法

本文主要讲解了C++中几种强制类型转换中的static_cast的常用情况,并对其中容易出错的情况进行了实验,对相应结果进行分析。

风拔萝卜的博客 2万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C++里static的用法

static的全部用法   要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:   int a;   string s;   其实就是:   auto int a;   auto st

Silence的程序实验室 654

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C++中static的用法总结

转载自:http://developer.51cto.com/art/201104/254141.htm 不管是C,C++,还是JAVA,它们中都包含static。当然这其中的用法及作用也是不一样的。下面主要介绍static在C++中的用法: 要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用stati

好好学习 676

C++学习:static关键字的作用和用法

四大作用 作用1:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。 作用2:保持变量内容的持久。(static变量中的记忆功能和全局生存期)存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static...

Lingyun 854

C/C++中static 的作用以及用法

C语言中与C++中static使用有所区别,C++中由于增加了对面向对象的支持,所有可以使用static在类内对成员变量及成员函数进行限定,但从实质上讲,static限定的变量都会在静态数据区占用空间,而不会在栈内开辟空间,所以使用sizeof(class)并不会计算静态成员变量所占内存。 C/C++中static用法 1)定义函数内部的静态变量,改变变量的存储期。 函数内部定义...

weixin_38182935的博客 680

cpp的static的实现

前言 学习自用,有错麻烦提一下 正文 static成员变量 static修饰的值会在静态区分配空间,是在编译时期就分配了空间,(那么在没运行时就占用了可执行文件的大小吧), 可以把static与全局变量作比较,实际上的实现也是像全局变量一样额外放一个地方,全局变量放在全局区,静态变量放在静态区局区,不同之处就在于static的类成员是指定只能类来访问的,相当于static成员变量做了访问限制的全局变量 static成员函数 不同于static的成员变量,static修饰的成员函数在代码区分配内

ptgood的博客 941

C++中static用法总结

1)C 语言的 static 关键字有三种: 1.静态局部变量; 2.静态全局变量; 3.静态函数 (注:对应于上面图片,static修饰普通变量分为静态局部和静态全局两种。静态全局变量和静态函数的作用类似,均只在本文件内可见,不能为其他文件所用,故其实也可以将静态全局变量和静态函数作为一类,而静态局部变量为另一类。) 2)C++ 语言的 static 关键字新增两种: 4.静态数据成员; 5.静态成员函数。 #重要知识点# 1) 静态局部变量的特点: 1.该变量在全局数据区分配内存(局部变量在栈区分

qq_32491021的博客 2067

c++中static的用法

1、static和const修饰类的成员函数 不可以同时用static和const修饰类的成员函数。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this指针的。也就是说此时const的用法和static是冲突的。 2、静态成员的特点: (1)static数据成员在...

qq_42247445的博客 1517

C++ 语法篇之 static 用法

这周的大部分时间都花了debug上,,在费了一番周折才debug成功之后发现原来是static局部变量搞得鬼。我意识到原来我对于static的用法理解地还不够透彻,所以想结合这个例子再总结一下。希望在今后的coding中,不在同一个地方跌倒。 下边是错误代码的示例: Class A{ int foo1(int a); }; int A::foo1(int a){ static int i = A_ARRAY[a]; // int i = A_ARRAY[a]; // 业务代码若

yixiwuha的博客 2321

C和C++中static的用法及友元

C和C++中static的用法 一、C语言中: static 修饰全局变量表示该变量只在本文件可用 static修饰局部变量,使得局部变量的生命周期的延长至程序结束 static修饰函数表示该函数只在本文件可用,不能被外部文件引用 二、C++中: static修饰类中成员变量与类中普通成员变量的区别 静态成员变量 普通成员变量 在类内定义时要加static修饰 不用加sta...

wolfGuiDao的博客 1785
上一篇: 一个C++实用的buffer类
下一篇: C++线程类封装实例
胡撸娃哈哈
博客等级 码龄12年 2粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值