標題 [筆記] 變數宣告在什麼位置比較好?
時間 2012/04/04 Wed 17:38:43
───────────────────────────────────────
不負責任聲明:以下憑印象+google寫成,有錯誤很正常 0rz
如果有人願意指出錯誤,我會很感謝您的 <(_ _)>
--------------------本文開始分隔線--------------------
以前的 C-style 寫法,希望變數都宣告在函式最一開始的地方
這樣的話,有宣告什麼變數都一目了然,非常的方便
如下所示
void main()
{
int a, b, c
a = xxx;
b = xxx;
c = xxx;
}
而且不論早宣告還是晚宣告,程式在 compile 的時候都一樣會將全部空間都撥出來給你
例如你整個程式宣告了三個 int 的變數
那麼不論這三個變數在最一開始就宣告了
或是在程式中段或尾段才宣告
compile 所撥出來的空間都是一樣的
那麼宣告在什麼時間點或位置有差別嗎?
經主管說明後,真的有差…
最好是在你要使用這個變數前再宣告,而且盡可能的給予初值
如下所示
void main()
{
…
…
…
int a = XXX;
int b = XXX;
int c = XXX;
}
不過我也不清楚給予初值最主要的目的是什麼,在網路上查了一下,
int x = 10;
和
int x;
x = 10;
效果是相同的
但後者彈性太大,而且在 code 海中,x=10 很容易被忽略掉。
另一個說法是:
最好在建構式中,給予所有變數初值,避免執行期間產生錯誤,
因為一般而言,C++在除錯版的時候,會自動給定變數初值(0, NULL),而Release版不會
變數值是看當時配置的記憶體資料內容而定
所以典型的程式描述是我Debug版跑起來都沒錯,但是Release版就是會當機...。
回到正題,這樣做有什麼好處呢?
1. 當你在維護程式時,你想要知道變數影響的地方,
你只要從宣告的地方開始往下找就好,而不需要從函數最一開始的地方開始看。
2. 若宣告在函數開頭的地方,有時會無法給予初值,
因為有些變數需要程式先執行某段 code 後才能給予初值。
3. 當程式中途有 return 結束的狀況時,如下所示
void main()
{
int a, b, c
a = xxx;
return ???;
b = xxx;
c = xxx;
}
我印象中是說宣告變數時,背後都會去執行某一段 code
因此如果一開始就把變數都宣告好,也執行了背後那段 code
但是程式因為 return 結束或其他原因而沒有使用到這個變數
那麼執行宣告 b, c 的 code 的時間就浪費掉了
int 這種資料型態可能還好
但如果是那種大物件的資料型態,花費的時間有時就會很可觀了
--
接球會"噴"
我 舉球會"歪" 但是! 我算分超強 o(一︿一+)o
攻擊會"OUT"
--
▅◣ Origin: 謠 言 報 bbs.csie.fju.edu.tw
▋◤ Author: ie945167 從 219-85-0-189-adsl-nei3.dynamic.so-net.net.tw 發表
沒有留言:
張貼留言