作者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/cn.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