各位溫拿、勝利組、E cup、30cm、真強者、pavone、高富帥、金城武、小妹,
大家好!打給後!胎嘎後!口泥幾哇!AV8D!Ladies and gentlemen!
※ 引述《ohohohya (安安你好我草泥馬)》之銘言:
: ※ 引述《BBS5566 (加魯魯獸 o'_'o)》之銘言:
: : 各位八仙樂園的高富帥白富美30cmFcup大家好! o'_'o
: : 本加魯最近正在研究C語言
: : 雖說摸熟C語言會摸不到C罩杯 可是本加魯為了生活也只能忍惹
: : 就在本加魯輸入
: : for (i=1;i<=9;i++){
: : 之後
: : 從背後經過的室友一把抓住本加魯的肩膀並說「你的大括號沒有換行喔(笑)。」
: : 本加魯心想不換行大括號不是男人的浪漫嗎?
: : 請問各位有沒有大括號要不要換行的八卦?
: 如果是我我會建議換行
: 大掛號內的東西在C的世界內稱為scope
: 而scope內的東西完全是另一個世界
: 例如
: int main()
: {
: int a=1;
^^^^^^^^
: {
: int a=1;
: }
: }
: 這兩個整數變數a在compile後會有兩個位址在heap內
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
小魯的朋友說,他挑個小小毛病:變數a看起來好像是main函數的local
variable,應該是在stack裡面,而非heap裡面喔~
函數的local variables與呼叫函數時傳入的參數,都會塞在堆疊
(stack)裡面,為了讓被呼叫的函數執行完後,還知道要回到哪裡執
行,還要在呼叫時把return address(也就是被呼叫的函數執行完後,
下一個要執行的指令的位置)一併推到stack!
以上是本魯的朋友說的。
: 像if for while switch你可以看成條件若有達成則執行底下的scope
: 因此上述這些函式在應用時可以直接寫成
: if(a==0)
: function();
: for(a=0;a<=b;a++)
: function();
: 之類的而不用加{}
: 因此scope的應用還有一種如
: char function(char *p)
: {
: blablabla.......
: }
: char string[10]
: {
: function();
: }
: 意思就是將function的執行結果放入字元陣列string中
: 有了scope的概念後程式可以變得非常靈活 提供你做參考