qey
Atitude is Everything.-- 关注C/C++,关注Linux(Unix) ,关注网络。 Better Late Than Never.
随笔 - 4, 文章 - 13, 评论 - 7, 引用 - 0
数据加载中……
变量作用域问题--清华讲义例子
变量作用域问题:
#include
<
iostream.h
>
int
i
=
1
;
//
i 为全局变量,具有静态生存期。
int
main()
{
static
int
a;
//
静态局部变量,有全局寿命,局部可见。
int
b
=-
10
;
//
b, c为局部变量,具有动态生存期。
int
c
=
0
;
void
other(
void
);
cout
<<
"
---MAIN---\n
"
;
cout
<<
"
i:
"
<<
i
<<
"
a:
"
<<
a
<<
"
b:
"
<<
b
<<
"
c:
"
<<
c
<<
endl;
c
=
c
+
8
; other();
cout
<<
"
---MAIN---\n
"
;
cout
<<
"
i:
"
<<
i
<<
"
a:
"
<<
a
<<
"
b:
"
<<
b
<<
"
c:
"
<<
c
<<
endl;
i
=
i
+
10
; other();
}
void
other(
void
)
{
static
int
a
=
2
;
static
int
b;
//
a,b为静态局部变量,具有全局寿命,局部可见。
//
只第一次进入函数时被初始化。
int
c
=
10
;
//
C为局部变量,具有动态生存期,
//
每次进入函数时都初始化。
a
=
a
+
2
; i
=
i
+
32
; c
=
c
+
5
;
cout
<<
"
---OTHER---\n
"
;
cout
<<
"
i:
"
<<
i
<<
"
a:
"
<<
a
<<
"
b:
"
<<
b
<<
"
c:
"
<<
c
<<
endl;
b
=
a;
}
运行结果:
---MAIN---
i: 1 a: 0 b: -10 c: 0
---OTHER---
i: 33 a: 4 b: 0 c: 15
---MAIN---
i: 33 a: 0 b: -10 c: 8
---OTHER---
i: 75 a: 6 b: 4 c: 15
posted on 2006-04-08 11:56
无声无色
阅读(333)
评论(2)
编辑
收藏
引用
评论
#
re: 变量作用域问题--清华讲义例子
回复
更多评论
细细看它各个变量的寿命域和可见域,有一定启示!
2006-04-08 12:10 |
无声无色
#
re: 变量作用域问题--清华讲义例子
回复
更多评论
static 定义的int静态变量在没有赋值时,系统自动赋值0;other函数里,作为静态局部变量a,b,具有全局寿命,局部可见,但是只在第一次进入函数时被初始化。出了other函数之后,函数里面的静态局部变量a,b不可见。当第二次调用other函数时,不初始化,都是用第一次调用other函数之后得到的a,b的值。
但是我还是不明白它们的物理上的存贮是怎么样的?难道同样是静态变量a,它们在物理的存储空间不同吗??
2006-04-08 12:59 |
无声无色
刷新评论列表
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 无声无色
导航
C++博客
首页
新随笔
联系
聚合
管理
<
2009年10月
>
日
一
二
三
四
五
六
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
语言基础(4)
(rss)
随笔档案
2009年10月 (3)
2006年6月 (1)
文章档案
2008年11月 (10)
2006年5月 (1)
2006年4月 (2)
收藏夹
C++教程(1)
(rss)
学习网上课程(5)
(rss)
计算机学习网
chinaunix
csdn.net
linux伊甸园
编程中国
中国教育和科研计算机网
体育连接
王琳blog
新浪综合体育
搜索
最新评论
1. re: string 类型作为函数局部变量返回
实际上不用管那么多,可以认为函数返回一个值,这个值就是string类型;主要是因为string和char[] 有很大不同,char[]数据处于栈区,而string 的数据是处于堆区(new ??)。
--无声无色
2. re: 内存覆盖问题
release 模式下是可以有 静态常量数据区 的数据的修改操作的!
debug 模式是不允许的,会提示内存非法操作错误错误!
--无声无色
3. re: 内存覆盖问题
评论内容较长,点击标题查看
--无声无色
4. re: 内存覆盖问题
评论内容较长,点击标题查看
--无声无色
5. re: 变量作用域问题--清华讲义例子
评论内容较长,点击标题查看
--无声无色
阅读排行榜
1. stdlib.h 中常用函数[2]数字字符处理(1318)
2. ctype.h 中常用函数:字符类型判断及简单转换(1035)
3. stdlib.h 中常用函数[3]简单数值函数和算法函数(787)
4. stdlib.h 中常用函数[1]内存分配和释放(753)
评论排行榜
1. ctype.h 中常用函数:字符类型判断及简单转换(0)
2. stdlib.h 中常用函数[1]内存分配和释放(0)
3. stdlib.h 中常用函数[2]数字字符处理(0)
4. stdlib.h 中常用函数[3]简单数值函数和算法函数(0)