一个关于全局变量的问题??

y531876 2005-10-27 03:47:34
在已程序中有如下两个函数
int f()
{
static int a = 0;
.....
return 0;
}

int g()
{
static int b = 1;
.......
return 0;
}

有如下问题:
在g()中是否可以访问f()中的变量a?, 如果可以改如何访问??
...全文
187 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
PMsg 2005-10-28
  • 打赏
  • 举报
回复
声名成全局变量
否则只能在函数的作用域内可访问
ad2003happy 2005-10-28
  • 打赏
  • 举报
回复
int f() //在C语言中,函数f()隐含为外部函数
{
static int a = 0; //静态局部变量(在内存的静态存储区分配空间,在程序运行时即分配内存空间,并且运行结束,变量a还占用这个内存空间,不释放!;虽然是局部变量,但是static修饰的局部变量他的性质和全局变量非常的相似;它只能被自己的函数调用,调用值是上次程序结束时变量a的值.)
.....
return 0;
}

extern int f() //extern 声明,不管在文件内还是文件外,都可以使用函数f(),除非用static修饰函数 f().
int g()
{
static int b = 1;
f(); //调用函数f(),就可以访问变量a了,但是可惜函数的返回值永远是0.但是在函数体内部,变量a一直在被运算,并且保存a的结果,可惜最后的语句是 return(0)而不是retur(a).

.......
return 0;
}
tyj_3 2005-10-28
  • 打赏
  • 举报
回复

在g()中不可以访问f()中的变量a,
在程序运行过程中用static定义的变量一直占用内存不释放,如果是a是全局变量则g()可以访问,但是a是局部静态变量,所以g()不能访问,下面的情况可以访问
int a; //在函数外声明变量,作用域从该处到文件结尾,函数就可以访问该变量了
int f()
{
a=0;
.....
return 0;
}

int g()
{
static int b = 1;
.......
return 0;
}
lcmeng 2005-10-28
  • 打赏
  • 举报
回复
哪里有全局的变量?这样的话根本不行.
zh1369 2005-10-28
  • 打赏
  • 举报
回复
不行!
ckp 2005-10-27
  • 打赏
  • 举报
回复
静态,在函数内部定义,当然只能在函数内部可见了。
nol 2005-10-27
  • 打赏
  • 举报
回复
没有全局变量呀,静态的和全觉得不是对等的。
cxyol 2005-10-27
  • 打赏
  • 举报
回复
可以访问a, 只要这两个函数是在一个文件中
--------------------~
错了,没有全局变量,静态变量只能在函数内部访问!
其实,楼主完全可以自己试试呀!
cholera 2005-10-27
  • 打赏
  • 举报
回复
可以访问a, 只要这两个函数是在一个文件中.
hbvanguard 2005-10-27
  • 打赏
  • 举报
回复
不可以,up
code8238 2005-10-27
  • 打赏
  • 举报
回复
static是静态局部变量,不是全局变量,作用域外是不可见的。你可以这么写
int a;
int f()
{
a=0;
.....
return 0;
}

int g()
{
static int b = 1;
a=1
.......
return 0;
}

jidahyx 2005-10-27
  • 打赏
  • 举报
回复
哪里有全局变量?
static变量具有内联性质
其他函数不可见;

64,683

社区成员

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

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