Re: [問題] 請問static是什麼意思...

看板C_and_CPP (C/C++)作者 (燒賣)時間17年前 (2007/10/05 02:41), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/5 (看更多)
※ 引述《OpenMX (材料探索者)》之銘言: : 我又來問問題了-.- : 近來在看個計算材料的code : : http://staff.aist.go.jp/t-ozaki/b-bop/b-bop.html : 裡面用了一堆 static這修飾 : 看了一堆書 也問了人 還是搞不清處static到底是什麼意思啊.. : 又static在科學計算上有什麼好處 以至於這作者要大量使用... : fortran確定是沒有對應這語法的 =.= : 煩請高手回答 謝謝!!! 在 C/C++ 中,static 修飾詞在不同地方的意義不同。我看你附上的程式碼只有看到 加在 local variable 之前的,那樣的寫法稱作 static local variable。 如果你對 c 語言的 scope 有點基礎概念,應該知道 local variable 只在 { } 區間 內有效,過了就消失。也就是說,它的壽命就只有在進入區間內到離開區間前。 一個區間可能是一個 function,或是 if、for、while,甚至是你在 function 內任何 地方隨便寫一組 { } 括弧也會成為一個區間。 Static local variable 的壽命跟 global variable 一樣長,但是只在宣告的 { } 區間內是可視的。也就是只有在 { } 區間內可以存取,但是其值在離開區間後仍會 保留,且初始化行為只會有一次。 以下例來說,function 被執行幾次,count 就會是多少。 void function() { static count = 0; // count 只有第一次會初始化成 0 count++; } 你可能需要一本 c 語言的書籍當作輔助工具,不然類似的問題還會遇到很多。 -- Licensed under CC2.5(TW) by-sa, Samael Wang. http://creativecommons.org/licenses/by-sa/2.5/tw/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.82.153
文章代碼(AID): #171JFLX4 (C_and_CPP)
文章代碼(AID): #171JFLX4 (C_and_CPP)