→ loveme00835:請三句一起看, 吃 heap 比較重的類別就是如此 06/02 23:27
※ 引述《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