| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 834 人关注过本帖
标题:求指点,调用函数中出现主函数已有的变量
取消只看楼主 加入收藏
flypanda999
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-10
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
求指点,调用函数中出现主函数已有的变量
首先拜个晚年。我是个无任何基础的初学者,用的是吕凤翥的《c++语言程序设计》,课后习题里有这么一段代码:

#include<iostream.h>
int a;
void main()
{
     int b=2;;;
     cout<<a<<','<<b<<endl;
     {
        int b;
        static int a=5;
        cout<<a<<','<<endl;
        a=10;
        b=10;
        cout<<a<<endl;
     }
     b=8;
     cout<<a<<','<<b<<endl;
}
在VC++上实验等效于下面一段代码:
#include<iostream.h>
int a;
void fun();
void main()
{
int b=2;
cout<<a<<','<<b<<endl;
fun();
b=8;
cout<<a<<','<<b<<endl;
}
void fun()
{
int b;
static int a=5;
cout<<a<<','<<endl;
a=10;
b=10;
cout<<a<<endl;
}
我不明白的是:在同一个源文件中a如何能定义两次,而且还是两种不同的存储类。很是困惑,请高人帮我指点下迷津。
搜索更多相关主题的帖子: void include 
2013-02-14 13:18
flypanda999
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 2楼 zklhp
之前有一道例题:
#include<iostream.h>
void fun();
void main()
{
  fun();
  fun();
}
void fun()
{
  int a=5;
  a=2*a;
  static int b=10;
  b=2*b;
  cout<<a+b<<endl;
}
结果是30
      50
分析中一说第次调用fun()结束时b的值仍保留,等到第二次调用时b的值不能被再次定义了。为什么这里就不能再次定义,而之前我问的那段里就可以再次调用呢?多谢
2013-02-14 13:47
flypanda999
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 6楼 zklhp
嗯嗯,我就是没法理解例题中说a是静态存储类变量,第一次调用结束后不释放,也不能被再次定义,而最上面书后习题中那段代码int a;是外部存储类变量,程序不结束不会释放,而为什么又可以被再次定义为静态存储类变量呢
2013-02-14 14:33
flypanda999
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 9楼 Susake
外部存储类变量的作用域是整个程序啊,怎么可以被再定义呢?(最上面那段代码中的int a)
2013-02-14 14:52
flypanda999
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-2-10
收藏
得分:0 
回复 23楼 zklhp
能不能帮推荐些像样的教材,谢谢
2013-02-15 17:54
快速回复:求指点,调用函数中出现主函数已有的变量
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028313 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved