作者redbee (ㄚ峰)
看板C_and_CPP
標題[問題] static變數用for迴圈與function重複宣告
時間Wed Sep 28 11:58:45 2016
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Dev C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
問題(Question):
1. 用for迴圈呼叫function,在function宣告static變數並累加,變數會累加,
但為跳離在進入function時何不受到"宣告"被改變數值。
2.用類似的想法,直接在for迴圈內宣告變數,再將此變數累加
為何不會有重複宣告的問題?
(若是重複貼"宣告相同變數"的敘述,compiler會出現重複宣告的錯誤)
3.在for迴圈內宣告static變數,再將此變數累加
為何此變數可以一直被累加而不會被宣告敘述修改值?
(若是重複貼"宣告相同變數"的敘述,compiler會出現重複宣告的錯誤)
餵入的資料(Input):
預期的正確結果(Expected Output):
錯誤結果(Wrong Output):
程式碼(Code):(請善用置底文網頁, 記得排版)
-------------(函式呼叫版本)-----------
http://ideone.com/ft95Hj
-------------(for迴圈呼叫版本)-----------
http://ideone.com/MJz3uL
-------------(重複宣告(當然是錯誤))-----------
http://ideone.com/8xNX29
補充說明(Supplement):
這是我在書上看到介紹static變數的範例(呼叫函數,函數內宣告static變數)
(我沒有完全照著打,結果是有符合書上的結果)
很好奇為何可以用for一直宣告
且用static變數,值不會被宣告覆蓋過,可以完成累加的功能。
謝謝版友的解惑。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.13.186
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1475035143.A.81A.html
1F:→ Caesar08: google "c++ static 變數" 不是就有一堆了嗎? 09/28 12:17
2F:→ pttworld: 定義和scope,可以使用Code::Blocks 09/28 13:19
3F:推 dontfindme: static只會宣告一次,而且一定要給初值,所以之後其 09/28 14:18
4F:→ dontfindme: 實根本沒有再宣告 09/28 14:18
5F:推 CoNsTaR: 1、所有變數都只會被「宣告」一遍 09/28 14:24
6F:→ CoNsTaR: 2、非全域的變數可能被初始化不只一遍 09/28 14:24
7F:→ CoNsTaR: 3、static 變數只初始化一遍 09/28 14:24
8F:→ CoNsTaR: 關鍵字 lifetime & scope 09/28 14:28
9F:→ redbee: 感謝版友們的解答。 09/28 18:07