一個c函數char *getdate(){static char date[10];...return date;}這里date是static,即使這個函數返回后,仍可以在調用它的函數里使用這個變量,但如果定義為char date[10],則date只是在函數棧中分配空間,出了函數就有可能被覆蓋,問題是如果是static char date[10],是否后面只能對它賦值一次?如果后面是將11-FEB-11一個字符一個字符的賦給date,是否可行?謝謝!
2 回答

喵喵時光機
TA貢獻1846條經驗 獲得超7個贊
你在函數中定義static變量,在定義的時候須得給他賦值,而且在程序運行中,只有第一次調這個函數時你所賦的值才有效果,之后每次調此函數,都不會重新給他賦值了(例如staitc a = 10,下次跑這個函數時不會跑這句話了。)。不過你可以在函數中改變這個值,并且這個值會被保留下來,當你下次調這個函數的時候,得到的值會是你最后給變量所賦的值。
static 變量 是可以改變的。只是在初始化時候只會賦值一次而已。。。比如你在一個函數里定義 X 變量,那么你每次調這個函數都會去定義這個變量吧,但是如果你把 X 定義為 static 類型,那么你只會第一次掉它的時候會去定義它,后面調這個函數時,X 變量就已經存在了不會再去定義。但是它的值還是可以改變的。你可以通過賦值語句改變static變量的值 .

梵蒂岡之花
TA貢獻1900條經驗 獲得超5個贊
關鍵字static的作用是什么?
這個簡單的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用:
?; 在函數體,一個被聲明為靜態的變量在這一函數被調用過程中維持其值不變。
?; 在模塊內(但在函數體外),一個被聲明為靜態的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。
?; 在模塊內,一個被聲明為靜態的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。
- 2 回答
- 0 關注
- 900 瀏覽
添加回答
舉報
0/150
提交
取消