Re: [問題] 對static的一點疑問

看板C_and_CPP (C/C++)作者 (Sylvanas)時間16年前 (2009/01/29 22:05), 編輯推噓5(5011)
留言16則, 8人參與, 最新討論串2/2 (看更多)
我又更改程式做一點測試但是結果更讓我疑惑了 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)

01/29 22:13, , 1F
那你覺得應該會是什麼樣子呢?
01/29 22:13, 1F

01/29 22:14, , 2F
很....正常啊= = 不然你想要怎樣子的呢?
01/29 22:14, 2F

01/29 22:16, , 3F
顏色好漂亮歐~ 有工具嗎?
01/29 22:16, 3F

01/29 22:42, , 4F
因為static的scope原本在count_calls後來test_static()?
01/29 22:42, 4F

01/30 00:05, , 5F
因為書上寫說static變數一但被建立,程式終止前都不會被
01/30 00:05, 5F

01/30 00:05, , 6F
銷毀
01/30 00:05, 6F

01/30 00:08, , 7F
但是count_calls()的ctr似乎跟test_static()的ctr一點關
01/30 00:08, 7F

01/30 00:09, , 8F
係都沒有
01/30 00:09, 8F

01/30 00:10, , 9F
確實是完全沒有的 請當作它們是兩個獨立的變數
01/30 00:10, 9F

01/30 00:11, , 10F
書上說的是 life time 你的問題是 scope
01/30 00:11, 10F

01/30 00:14, , 11F
To softwind:我的editor是vim,在pietty上複製ANSI碼
01/30 00:14, 11F

01/30 00:17, , 12F
喔喔,我懂了,他的scope只在function裡面,lifetime是程
01/30 00:17, 12F

01/30 00:17, , 13F
式結束前。
01/30 00:17, 13F

01/30 00:18, , 14F
謝謝j大f大
01/30 00:18, 14F

01/30 14:02, , 15F
還有static擺在global變數跟擺在function前面都是有意義的
01/30 14:02, 15F

01/31 00:21, , 16F
原po你對變數的scope的觀念要再補強一下喔
01/31 00:21, 16F
文章代碼(AID): #19WRUbQS (C_and_CPP)
文章代碼(AID): #19WRUbQS (C_and_CPP)