C++中静态函数里的局部变量是存在在静态存储区的吗?

liyaobinRyan 2011-02-25 02:31:22
如些,C++普通函数与类中的成员函数如果声明为static类型,但其中的所用到的局部变量没有声明为static类型,则其局部变量是存储在静态存储区吗?属于静态类型吗?因为进行多线程编程时,我不知道是否为对静态函数中的局部变量进行保护。求指教
...全文
591 11 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
静态函数的作用只是为了避免其他模块访问,跟内部变量的属性没有关系

64,687

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧