[問題] 為什麼local variable的scope不能延及子程序?

看板PLT (程式語言與理論)作者 (mystea)時間17年前 (2008/03/05 02:36), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
大家好, 我有一個粗淺的關於scope的問題想請教大家. 寫程式的時候, local variable的scope都僅限於自己這個函數, 如果想用子函式去碰就非得pass by reference傳進去才行. 我初學scope時, 老師跟我說這樣主要的目的是為了名稱可以重複使用. 比方說人們常常用i來跑for loop. 當local variable的scope像這樣設得 很小時, 子函式的i就不會跟母函式的i搞混了. 可是現在我不是很同意這個說法. 因為這種問題用類似namespace的手法其實 就可以解決了. 比方說我有下列的程式: int main() { int i; int son(int j); for(i=0;i<20;i++) { cout<<son(i)<<endl; } } int son(int j) { int i; for(i=0;i<j;i++) return i; } 像這樣的東西, 其實我可以內定son()裡的i叫做son::i, main()裡的i叫做main::i, 然後各個函式裡不加"namespace"的default就是指自己函式裡的那個i. 像這樣名稱也並不會搞混是不是呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 76.170.235.113

03/05 04:42, , 1F
你內定的不就等價於namespace﹖
03/05 04:42, 1F
文章代碼(AID): #17pPQmfs (PLT)
文章代碼(AID): #17pPQmfs (PLT)