[問題] static變數用for迴圈與function重複宣告

看板C_and_CPP作者 (ㄚ峰)時間7年前 (2016/09/28 11:59), 編輯推噓2(207)
留言9則, 5人參與, 最新討論串1/1
開發平台(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://www.ptt.cc/bbs/C_and_CPP/M.1475035143.A.81A.html

09/28 12:17, , 1F
google "c++ static 變數" 不是就有一堆了嗎?
09/28 12:17, 1F

09/28 13:19, , 2F
定義和scope,可以使用Code::Blocks
09/28 13:19, 2F

09/28 14:18, , 3F
static只會宣告一次,而且一定要給初值,所以之後其
09/28 14:18, 3F

09/28 14:18, , 4F
實根本沒有再宣告
09/28 14:18, 4F

09/28 14:24, , 5F
1、所有變數都只會被「宣告」一遍
09/28 14:24, 5F

09/28 14:24, , 6F
2、非全域的變數可能被初始化不只一遍
09/28 14:24, 6F

09/28 14:24, , 7F
3、static 變數只初始化一遍
09/28 14:24, 7F

09/28 14:28, , 8F
關鍵字 lifetime & scope
09/28 14:28, 8F

09/28 18:07, , 9F
感謝版友們的解答。
09/28 18:07, 9F
文章代碼(AID): #1Nwq07WQ (C_and_CPP)