函数中的静态局部变量可以在函数外使用吗?如果可以,怎样使用?

iwillalwaysloveyou 2006-05-07 12:52:29
如题!
...全文
2684 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenhu_doc 2006-05-08
  • 打赏
  • 举报
回复
修正二楼的程序:
const int constInt = 1; -------> static int constInt = 1;

在我昨天去上自习,突然怎么想起来了static,const。。。。。 还有。。。。
不好,这个回复有点错误,今天上午自习的时候,有提醒了自己,一定要回来修正一下//

阿弥托佛... 罪过罪过。。。
sxhnag820 2006-05-08
  • 打赏
  • 举报
回复
学习中................
yleiou 2006-05-08
  • 打赏
  • 举报
回复
只知道不可以在函数外部使用静态局部变量 没有想到原来可以变脸
navi_dx 2006-05-08
  • 打赏
  • 举报
回复
返回一个地址或引用就可以在外面使用了,看看设计模式里的单件
fengyg7924 2006-05-08
  • 打赏
  • 举报
回复
静态局部变量 一般只在函数内使用,即便通过引用或指针在外部使用,那样也会破怀程序得可读性,看起来费解XXXX
lxfxw 2006-05-08
  • 打赏
  • 举报
回复
只能在函数内使用!
Tycool 2006-05-08
  • 打赏
  • 举报
回复
好,不用俺总结了。呵呵
同意:fengyg7924(牛虻)
静态局部变量 一般只在函数内使用,即便通过引用或指针在外部使用,那样也会破怀程序得可读性,看起来费解XXXX

weiliems 2006-05-08
  • 打赏
  • 举报
回复
函数中的静态局部变量可以在函数外使用吗?如果可以,怎样使用?

这个题目其实很怪异,
静态变量 表示在程序生存期会被保留下来到下次修改这个变量 有相当于全局变量的意义 ;
局部变量 表示在程序生存期会随着定义的作用域而消亡的变量 通常都是过度变量;
两者放在一起 感觉上很突兀,文字游戏。
在一个会消亡的局域中使得一个变量在下次再进入这个局域时还有效,一般不会用这种声明,也不知道哪个人给你考试这样一道题目
通常要在函数外使用一个变量 无非传引用和指针 用静态局部的我是没有看到过,可能见识少了点。嘎嘎,见笑了!
king_water 2006-05-07
  • 打赏
  • 举报
回复
绝对不
gjianpro 2006-05-07
  • 打赏
  • 举报
回复
局部变量只能够在它的作用域范围内有效,出了此范围就不能够使用此变量名访问了
iwillalwaysloveyou 2006-05-07
  • 打赏
  • 举报
回复
返回引用或指针的发法,可能符合他们的要求,我当时没想到,衰-_-
iwillalwaysloveyou 2006-05-07
  • 打赏
  • 举报
回复
这是一家公司的面试题
iwillalwaysloveyou 2006-05-07
  • 打赏
  • 举报
回复
知我者 yhmhappy2006也
塘外人 2006-05-07
  • 打赏
  • 举报
回复
我想楼主的意思是直接通过那个变量名来访问,
那自然是行不通 的
sharpdew 2006-05-07
  • 打赏
  • 举报
回复
作为引用返回是常用的,如要让某个函数表达式可以表示l值,经常这样:
fun() = 5;
houdy 2006-05-07
  • 打赏
  • 举报
回复
函数中最好不要使用静态局部变量,因为这样的函数是"不可重入的(non-reentrant)",在多线程编程中就傻眼了。
lyskyly 2006-05-07
  • 打赏
  • 举报
回复
可以返回一个指针,这样就能改变它的值了
int* fun()
{
static int i = 10;
cout<<i<<endl;
return &i;
}

int main()
{
int * pa = fun();
(*pa)++;
fun();
}
输出
10
11
sankt 2006-05-07
  • 打赏
  • 举报
回复 1
可以将它作为返回值,这样就可以在外面使用了

与局部变量的区别在于: 在函数退出时, 这个变量始终存在,静态局部变量延长了局部变量的生命周期. 但不能被其它 函数使用, 当再次进入该函数时, 将保存上次的结果。其它的特点与局部变量一样。
september___29 2006-05-07
  • 打赏
  • 举报
回复
可以在函数外头使用,返回
int& fun(void){
static int returnStaticInt;
return returnStaticInt;
}
这样就OK
chenhu_doc 2006-05-07
  • 打赏
  • 举报
回复
函数中的静态局部变量可以在函数外使用吗?

静态局部变量 ////局部?? 在外面使用??? 矛盾得太矛盾。。。。

可能是这样的一个误区:

#include "stdio.h"
int fun()
{
const int constInt = 1;
return ++constInt;
}
void main()
{
int num ;
while(num != 10)
printf("%d\n",fun());
}

64,636

社区成员

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

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