首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
C++ 中 `static` 的作用?什么场景下用到 `st
[问答题]
C++ 中 `static` 的作用?什么场景下用到 `static`?
添加笔记
求解答(0)
邀请回答
收藏(32)
分享
纠错
21个回答
添加回答
9
小程同学1123
1.在函数体内,用static修饰的静态局部变量,只初始化一次,每次调用函数维持其值保持不变; 2.在函数体外,用static修饰的静态全局变量,只能被当前文件中的函数引用,不能被其他文件调用; 3.在函数体外,用static修饰的静态函数,只能被当前文件中引用,不能被其他文件函数调用。
发表于 2025-07-26 11:39:05
回复(0)
5
I椎名真白I
static可以用于修饰变量 函数,成员。主要用于改变其生命周期,作用范围,以及数据的共享。
发表于 2025-07-04 12:52:19
回复(0)
1
Stella3333
函数体内,static用来定义静态局部变量,只初始化一次,在函数多次的调用过程中一直保持原值;在函数体外,用static修饰的静态全局变量,只能被当前文件中的函数引用,不能被其他文件调用;在类中 使用static修饰的函数或者是变量属于类本身而不是这个类的对象实例 可以实现数据共享或者是工具函数
发表于 2025-11-09 19:55:12
回复(0)
1
月色真美月光护佑
static是运算符,在c++中用来修饰变量,函数。被其修饰的局部变量其变量存储于静态存储区,其值会被保留。修饰的全局变量同局部变量相似,也存在静态存储区,但是相对于全局变量,其作用域被限制在本文件中。静态函数只能使用静态变量,作用域也是本文件中,修饰类的静态变量和函数其属于类本身。通常在数据共享,消息同步等场景用到static
发表于 2025-08-28 18:56:35
回复(0)
1
爱刷题的坤坤
修饰局部变量改变存储位置延长生命周期,整个程序运行期间只会定义一次静态局部变量,全局变量修饰改变没有链接性只在本源文件可见 修饰成员变量表示改变量归对象拥有归类拥有,所有对象共享这个静态成员变量,类内定义类外初始化 修饰成员函数表示该函数属于类不属于对象,函数参数没有this指针了,外部通过域访问符就可以调用了 在c++11当中静态局部变量的初始化是线程安全了只会初始化一次可以用来实现单例模式
发表于 2025-08-05 23:05:51
回复(0)
0
牛客78237161号
总的来说,static用来控制“生命周期”和“作用范围”: 1、在函数体内,static用来定义静态局部变量,只需要初始化一次,函数结束时不会消失,存在于程序的整个运行周期,常用于统计函数的调用次数和记录上一次的值; 2、在函数体外,static定义的静态全局变量或函数,只能在该文件中调用,避免命名冲突等; 3、在类中,static定义的成员函数或变量,不属于任何一个类对象的实例,而是属于整个类,常用于实现数据共享和工具函数。
发表于 今天 16:53:32
回复(0)
0
taste001
在函数体内的修饰静态成员变量。函数调用时不能改变其值。 在函数体外修饰的静态全局变量,该变量只能由其当前文件函数调用,不能被其他文件调用。 在函数体外state修饰的静态函数,只能被当前文件调用,不能被其他文件调用。
发表于 2025-11-07 17:21:55
回复(0)
0
PPPaisha
在函数内部使用static修饰的变量具有静态存储期 可以在函数的多次调用中保留值 在文件作用域中 用static修饰的函数或者是变量可以保证仅在当前翻译单元可见 避免了命名冲突 在类中 使用static修饰的函数或者是变量属于类本身而不是这个类的对象实例 可以实现数据共享或者是工具函数
发表于 2025-11-05 12:09:22
回复(0)
0
时七❀
C/C++的一个关键字,常用来修饰变量和函数,用来控制变量的存储方式和作用范围。 1.static修饰的变量会存储在静态区,默认值为0,直至程序运行结束才释放。 2.static修饰函数内的局部变量的时候,只会进行一次初始化,在函数调用结束之后不会释放,因为该变量存储在静态区,延长了局部变量的生命周期,并且保留其状态,下次调用的时候还是保留原有的值。 3.static修饰全局变量和函数,使其只能被当前文件链接,没有外部链接属性了,其他文件不能链接访问。 4.static修饰类的成员,使其变成所有类对象共享的。 5.static修饰的类中的成员函数,就成为了静态成员函数,没有隐藏的this指针,只能访问静态成员变量,不能访问非静态成员变量。 6.static修饰类中的成员变量,就是静态成员变量,必须要在类外初始化。
发表于 2025-10-02 15:38:07
回复(0)
0
offer快快到怀里来
局部变量:延长生命周期 全局变量:限制作用域 局部函数:直接调用 全局函数:其他文件不可调用
发表于 2025-09-26 16:45:03
回复(0)
0
Lucerys11
局部变量:初始化一次,调用函数保持不变 全局变量:其他文件不可以调用 局部函数:类成员函数,不初始化就可以调用 全局函数:其他文件不可调用
发表于 2025-09-24 19:31:17
回复(0)
0
牛客293230045号
static可以改变局部变量,全局变量函数的声明周期和作用范围,修饰局部变量时会延长变量的生命周期直至程序结束,修饰全局变量时,使全局变量只能在当前文件中被访问
发表于 2025-09-17 19:07:38
回复(0)
0
今天阳光好灿烂
| 场景(C++ 中 `static` 的三种核心作用) | 核心作用 | 说明 | | -------------------------------------- | ------------ | ------------------------------------------------------------ | | **静态局部变量** | 延长生命周期 | 函数内部变量只初始化一次,多次调用保留值 | | **文件作用域(全局变量/函数)** | 限制可见性 | 仅在当前文件可见,避免命名冲突 | | **类的静态成员** | 类共享成员 | 成员属于类而非对象实例,所有对象共享,静态成员函数不访问非静态成员 |
发表于 2025-09-04 11:45:42
回复(0)
0
干森么啦
static修饰的全局变量只能被当前文件使用,随着程序的结束销毁;修饰的函数体中变量,虽然作用域在函数中,但是生命周期是整个函数。修饰的成员类成员函数不用创建对象,使用类即可调用,是所有对象共用的一块地址的同一个函数,静态成员变量也是这样,类内定义类外初始化。
发表于 2025-08-26 12:24:17
回复(0)
0
又被画饼了的西红柿很糊涂
static代表修饰静态变量或静态成员函数,静态变量存在于系统堆区,编译时就存在,可以全局调用
发表于 2025-08-22 10:34:49
回复(0)
0
仪宝x
静态全局变量,在cpp文件中仅初始化一次,生命周期长。静态成员变量,在类中保存一份,不在对象中保存。
发表于 2025-08-19 15:47:20
回复(0)
0
小脑袋瓜锃亮
static是一个静态的声明,多用来数据共享,当他用来定义类内的成员的时候,这种成员会共享同一份数据。
发表于 2025-07-28 23:40:21
回复(0)
0
在努力的90后很想吃开封菜
static为静态变量,可以修饰变量、函数等,主要作用是控制作用域和生命周期。其修饰的变量只执行一次初始化,函数多次调用过程中,该变量一直存留并保留上一次的值
发表于 2025-07-28 20:12:22
回复(0)
0
牛客699783107号
控制变量的作用域和生命周期。 一个类的静态成员变量和成员函数不能被重写,因为它属于这个类,所有对象共用这个变量和函数。静态成员函数不能调用非静态成员,没有this指针,找不到对应的遍历。 全局静态变量在程序运行的时候进行初始化,局部静态变量在第一次运行该函数的时候进行初始化。 需要保护变量作用域的时候需要用
发表于 2025-07-27 09:59:12
回复(0)
0
哒哒努力
静态局部变量:函数内使用static定义的变量放置于存储区,只初始化一次,函数的多次调用中保留上一次的值; 文件作用域的内部链接:全局或命名空间作用域static声明的函数或变量,只能在当前翻译单元.cpp中访问; 类中的static定义的变量和函数不属于某个实例,而属于整个类,实现数据共享,直接使用类名访问;
发表于 2025-07-11 19:36:36
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
难度:
21条回答
32收藏
319浏览
热门推荐
相关试题
你认为自己为什么适合从事项目经理这...
项目管理
评论
(1)
你认为项目管理工作是什么?
项目管理
评论
(1)
你认为项目管理工作有没有什么不足,...
项目管理
评论
(1)
下面关于 C++ 中 move 语...
C++
评论
(1)
为防止SQL注入攻击,开发者计划在...
SQL
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题