形參默認存儲類型
Ⅰ 7、c語言中,形參的默認存儲類別為。 (A)auto (B) static (C)register (D)extern
C。
在函數內部或復合語句內定義變數時,如果沒有指定的存儲類型或使用了auto說明符,系統就認為所定義的變數具有自動類別。
形參即函數的自變數,其初值來源於函數的調用。只有在程序執行過程中調用了函數,形參才有可能得到具體的值,並參與運算求得函數值。形參表相當於變數說明,但應特別注意:此處只能使用類型標識符,而不能直接使用類型。
用auto(或省略)來區分說明的局部變數。當執行進入局部變數所在的塊時,在棧上為變數分配存儲,退出塊時,存儲單元被回收。具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。在函數內部定義的變數成為局部變數。
(1)形參默認存儲類型擴展閱讀:
1、register關鍵字提示編譯器把局部變數或函數的形參盡可能放入CPU的寄存器中,以便快速訪問。因此變數的位元組長度不應該超過寄存器的長度。不要用取地址符(&)去獲得此變數的內存地址。例如:
{
register int Miles;
}
2、static是全局變數的默認存儲類。例如:
static int Count;
int Road;
main()
{
printf("%d ", Count);
printf("%d ", Road);
}
Count與Road兩個變數都是默認的static存儲類。
3、extern存儲類是指全局變數可以被各個對象模塊訪問。使用extern關鍵字時,表示變數已經在別處定義,所以不能在此處初始化。
網路-形式參數
網路-存儲類
Ⅱ C語言中,實參的隱含存儲類型是 形參的隱含存儲類型是 A、auto B、static C、extern D、register
答案都選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)
Ⅲ 在C語言中,形參的預設存儲類是 ___________A auto B register C static D extern
A
auto:用來聲明自動變數。它是存儲類型標識符,表明變數(自動)具有本地范圍,塊范圍的變數聲明(如for循環體內的變數聲明)默認為auto存儲類型。
Ⅳ c語言中,函數的隱含存儲類別及形參的默認存儲類別分別是
c語言中,函數的隱含存儲類別是extern
形參的默認存儲類別是auto
Ⅳ c語言中形參的預設存儲類別是:() A:自動(auto) B:靜態(Static) C:寄存器(r
選擇A哦,大部分變數也都是auto,下面的這些都是關鍵字,都有特定的用途
Ⅵ C語言中形參的默認存儲類別是
C語言中形參的默認存儲類別是(A)auto(B)static(C)register(D)extern
解:
A 的變數在堆棧里,自然是運行時
B 是靜態變數
C 是寄存器變數,使用的是cpu的寄存器
D 是全局變數
BD都是放在數據段中的,編譯的時候就已經確定了位置(有的編譯器對b和d的處理不一樣)