社区
C++ 语言
帖子详情
C++中静态函数里的局部变量是存在在静态存储区的吗?
liyaobinRyan
2011-02-25 02:31:22
如些,C++普通函数与类中的成员函数如果声明为static类型,但其中的所用到的局部变量没有声明为static类型,则其局部变量是存储在静态存储区吗?属于静态类型吗?因为进行多线程编程时,我不知道是否为对静态函数中的局部变量进行保护。求指教
...全文
749
11
打赏
收藏
C++中静态函数里的局部变量是存在在静态存储区的吗?
如些,C++普通函数与类中的成员函数如果声明为static类型,但其中的所用到的局部变量没有声明为static类型,则其局部变量是存储在静态存储区吗?属于静态类型吗?因为进行多线程编程时,我不知道是否为对静态函数中的局部变量进行保护。求指教
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
mcd_23
2011-02-25
打赏
举报
回复
[Quote=引用 3 楼 liyaobinryan 的回复:]
例如:
static int function()
{
int value;
}
其中value是存储在静态区吗?
[/Quote]
存储在栈,声明为static时,才在静态存储区
小函数
2011-02-25
打赏
举报
回复
static关键字意思很多,普通函数是外部连接的,如果前面加static就变内部连接了,普通全局变量本来就是外部连接+静态区存储,加static仅仅把他变为内部连接,局部变量加static仅仅改变其存储位置,c++中全局常量加static无意义,类内的static const int可以在类内定义并初始化,类是内部连接的,但是类的static成员全是外部连接的~
lcy779779
2011-02-25
打赏
举报
回复
变量的作用域决定它的生存期,离开了作用域,那么其随之而消亡
变量分为局部变量、静态局部变量、全局变量
局部变量具有局部作用域,只局限于定义它的函数,一旦离开此函数即消亡
全局变量和静态局部变量具有全局作用域,整个程序的执行期间一直存在
static修饰函数,只是决定了此函数的作用域,所有对其可见的地方都可以调用此函数
变量和函数是定义是两码事
碎碎念
2011-02-25
打赏
举报
回复
static 修饰变量,和修饰函数是两回事。。
static函数里面的局部变量仍然是存储在栈上的。。。
Aniao
2011-02-25
打赏
举报
回复
C++函数的静态跟变量的静态是两码事
昵称很不好取
2011-02-25
打赏
举报
回复
额,不是。
static修饰函数,不会跑进去修饰变量
JAVASUI
2011-02-25
打赏
举报
回复
你自己写一个简单的 main 控制台程序,分别调用两次这个函数,每次设置不同的value值,再打印查看一下这个值,就知道了
pengzhixi
2011-02-25
打赏
举报
回复
[Quote=引用 3 楼 liyaobinryan 的回复:]
例如:
static int function()
{
int value;
}
其中value是存储在静态区吗?
[/Quote]
不是
liyaobinRyan
2011-02-25
打赏
举报
回复
例如:
static int function()
{
int value;
}
其中value是存储在静态区吗?
xiaoyu_1_30
2011-02-25
打赏
举报
回复
局部变量你是怎么定义的?
昵称很不好取
2011-02-25
打赏
举报
回复
静态函数的作用只是为了避免其他模块访问,跟内部变量的属性没有关系
C++
局部变量
、全局变量、
静态
变量(堆、栈、
静态
存储
区
)
转自:点击打开链接
C++
局部变量
、全局变量、
静态
变量(堆、栈、
静态
存储
区
) 1 static关键字 1.1 隐藏 eg: //a.c文件
中
char a = 'A'; void msg() { printf("Hello\n"); } //main.c文件
中
extern char a; pri...
C++
局部变量
、全局变量、static变量 (堆、栈、
静态
存储
区
)
共有两种变量
存在
静态
存储
区
: 全局变量 static变量(包括static全局变量和static
局部变量
) 在没有static关键字出现前,只能用全局变量来实现static的功能,之后static不仅实现了全局变量的功能,还做到了可以限制变量的使用范围。
存储
在
静态
存储
区
的变量在程序运行的开始就进行初始化,也是唯一的一次初始化。 类
中
的static
静态
成员:
静态
成员
函数
不含有this指针
静态
成员可以独立访问,无需创建对象然后下标访问 类的
静态
成员
函数
属于整个类,而不是属于类的对象调用。 所以他没有
C++
中
的
静态
局部变量
1
静态
局部变量
在
静态
存储
区
内分配
存储
单元。在程序运行期间都不释放。 2 对
静态
局部变量
是在编译时赋初值的,即只赋值一次,在程序运行时它已有初值。以后每次调用
函数
时不再重新赋初值而只是保留上一次
函数
调用结束时的值。 3
静态
局部变量
,如果定义的时候没有赋初值,编译时自动赋初值0或者空字符。 4
静态
局部变量
在
函数
调用结束后仍然
存在
,但其他
函数
不能引用它,在其他
函数
中
,它是"不可见"的...
day13|
C++
重难点之
静态
变量、全局变量、
局部变量
的
区
别,在内存上是怎么分布的、指针和引用的
区
别、
C++
内存分
区
day13|
C++
重难点之
静态
变量、全局变量、
局部变量
的
区
别,在内存上是怎么分布的、指针和引用的
区
别、
C++
内存分
区
【CPP】
局部变量
、
静态
局部变量
、全局变量、
静态
全局变量
C++
变量分类主要依据
存储
期和作用域两大维度。
局部变量
(自动变量)具有自动
存储
期和局部作用域,离开作用域即销毁;
静态
局部变量
在局部作用域内保持
静态
存储
期,值会被保留;全局变量具有全局作用域和
静态
存储
期,程序启动时创建;
静态
全局变量则限定在当前文件可见。关键
区
别在于:
静态
全局变量限制文件可见性,而
静态
局部变量
在
函数
内持久化。建议优先使用
局部变量
,谨慎使用全局变量,
静态
局部变量
适用于需要记忆状态的场景,
静态
全局变量可用匿名命名空间替代。
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章