回覆列表
-
1 # 使用者4367570282485
-
2 # 你永遠追不上的巨人
答案都選A:上面幾位胡說霸道。不是static 形參儲存型別只有兩種可能,一是auto型別,而是register型別。我給你細細解說auto 就是堆疊儲存 而register的是cpu內部暫存器儲存具體函式的形參採用那種儲存方法,這和函式的“呼叫規則(calling convention)”有關。呼叫規則主要設計引數的傳遞,入棧順序,暫存器傳參,函式返回值的儲存和清棧者,呼叫規則主要有 cdecl stdcall thiscall fastcall等等。棧是函式呼叫必需的資料結構。你可以在函式宣告是註明函式的呼叫規則:如 int cdecl add (int a,int b) 。 注意函式有預設的呼叫規則,所以你再寫程式時,沒有必要註明呼叫規則。你此外還可以新增編譯選項修改呼叫規則。cdecl : (c/c++語言預設的呼叫規則):堆疊傳參引數,因此是auto型別。stdcall :有叫做pascal,WINAPI,這個呼叫規則出現在windows的API函式中。它也採用堆疊傳遞引數。thiscall:類中的函式的呼叫方式:引數傳遞和編譯器有關 Windows VC中 this指標用ECX暫存器儲存,而unix gcc中 this用棧儲存。其他引數也是用棧儲存。fastcall:用暫存器儲存部分引數加快函式呼叫,其他引數用棧儲存。所以,沒有隱含的儲存型別,形參的儲存型別和呼叫規則有關。但是如果真要學究般的考慮這個問題,則答案選A,因為C語言函式的預設呼叫方式是cdecl,它的引數傳遞只採用了棧,因此是auto(答案A)而實參的儲存型別可以是A,B,C,D四種,隱含的型別(也就是你在定義變數是,不指明儲存型別)是auto(答案A)
許多程式設計語言中,可以將一段經常需要使用的程式碼封裝起來,在需要使用時可以直接呼叫,所以,函式也可以說是許多程式碼的集合,這就是程式中的函式