看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《littleshan (我要加入劍道社!)》之銘言: : ※ 引述《wzbird (大鳥)》之銘言: : : 其實比較像閒聊啦, 不過這邊沒有閒聊可以選 : : 最近發現兩種coding style : : 第一種是會在函數前面宣告變數, 等到要用到的時候才給他初值 : 會這樣做是因為 C90 規定變數只能宣告在 block 的最開頭 : 但其實這並沒有什麼好處 : 因此 C++ 和 C99 都消除了這個限制 : : 我想這兩種寫法應該是都可以, 只跟可讀性有關吧? : : 但是這邊的可讀性又不是會看不下去那種, 只是習慣問題. : : 不知道大家的習慣如何? : 用到時才宣告並給初值是比較好的 style : 一來這可以避免你忘記初始化 : 二來使用 class 的時候你也只能在宣告時初始化 : 第三個理由是原則上變數的 scope 愈小愈好 : 用到的時候才宣告不但比較節省資源 為什麼會比較節省資源呢? 有看過一種說法,雖然變數在要被用時才被宣告,但並不是說變數在被宣告時才真的存在 實際上Compiler在一進入函式時,就將所有函式變數所需要的空間在stack上配置好, 在函數一開始宣告變數,或是用到該變數時才宣告它,兩者耗費的空間不都是一樣嗎? 為什麼晚宣告可以節省資源呢? : 該變數也比較不容易被其它地方誤用 : : ==== : : 補充一下 : : 我看到第二種寫法那套code 他連for loop一定先給值 : : 他的for loop 會這樣寫 : : int func() : : { : : int i = 0; : : /*other code*/ : : for (; i < MAX; i++) : : { : : /*do something*/ : : } : : } : : 所以這樣是比較嚴謹的方法嗎? : : 可以避免i 沒有宣告到之類的 : 我會寫 for(int i = 0; i < MAX; i++) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.149.232
loveme00835:請三句一起看, 吃 heap 比較重的類別就是如此 06/02 23:27