作者darklady (Sylvanas)
看板C_and_CPP
标题Re: [问题] 对static的一点疑问
时间Thu Jan 29 22:05:24 2009
我又更改程式做一点测试但是结果更让我疑惑了
1 #include <iostream>
2 using namespace std;
3
4 size_t count_calls()
5 {
6 static size_t ctr =
0;
7 return ++ctr;
8 }
9
10 size_t test_static()
11 {
12 static size_t ctr =
100;
13 return ctr;
14 }
15
16 int main()
17 {
18
19 for (
size_t i =
0; i !=
10; ++i)
20 cout << count_calls() << endl;
21 cout << test_static() << endl;
22
23 }
跑出的结果是
1
2
3
4
5
6
7
8
9
10
100
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.222.220
※ 编辑: darklady 来自: 118.161.222.220 (01/29 22:06)
1F:→ james732:那你觉得应该会是什麽样子呢? 01/29 22:13
2F:推 ilovebbs:很....正常啊= = 不然你想要怎样子的呢? 01/29 22:14
3F:推 softwind:颜色好漂亮欧~ 有工具吗? 01/29 22:16
4F:推 Dreamer77:因为static的scope原本在count_calls後来test_static()? 01/29 22:42
5F:→ darklady:因为书上写说static变数一但被建立,程式终止前都不会被 01/30 00:05
6F:→ darklady:销毁 01/30 00:05
7F:→ darklady:但是count_calls()的ctr似乎跟test_static()的ctr一点关 01/30 00:08
8F:→ darklady:系都没有 01/30 00:09
9F:→ james732:确实是完全没有的 请当作它们是两个独立的变数 01/30 00:10
10F:→ firose:书上说的是 life time 你的问题是 scope 01/30 00:11
11F:→ darklady:To softwind:我的editor是vim,在pietty上复制ANSI码 01/30 00:14
12F:→ darklady:喔喔,我懂了,他的scope只在function里面,lifetime是程 01/30 00:17
13F:→ darklady:式结束前。 01/30 00:17
14F:→ darklady:谢谢j大f大 01/30 00:18
15F:推 meltice:还有static摆在global变数跟摆在function前面都是有意义的 01/30 14:02
16F:推 cobrasgo:原po你对变数的scope的观念要再补强一下喔 01/31 00:21