當前位置:首頁 » 存儲配置 » 隱含存儲類別

隱含存儲類別

發布時間: 2023-08-19 08:11:10

c語言中,函數的隱含存儲類別是 auto 還是 extern,為什麼兩種答案我都看到過

函數的存儲類型指的是其他文件模塊可否訪問,其類別可以是extern或static。

static是指該函數只能被本源程序文件道中的模塊訪問。extern是指可被本源程序文件外的模塊訪問。

C語言中函數的存儲類型隱含為版全局的,因此默認為extern。

函數內定義的變數,默權認作用域在本函數內,即其類型是auto。

(1)隱含存儲類別擴展閱讀:

C語言中提供了存儲說明符auto、register、extern、static說明的四種存儲類別。四種存儲類別說明符有兩種存儲期:自動存儲期和靜態存儲期。

其中auto和register對應自動存儲期。具有自動存儲期的變數在進入聲明該變數的程序塊時被建立,它在該程序塊活動時存在,退出該程序塊時撤銷。在函數內部定義的變數成為局部變數。在某些C語言教材中,局部變數稱為自動變數,這就與使用可選關鍵字auto定義局部變數這一作法保持一致。

extern用在變數聲明中常常有這樣一個作用:要在*.c文件中引用另一個文件中的一個全局的變數,那就應該放在*.h中用extern來聲明這個全局變數。

extern用於變數的用法:

1、extern int a;//聲明一個全局變數a

2、int a; //定義一個全局變數a

3、extern int a =0 ;//定義一個全局變數a 並給初值。一旦給予賦值,一定是定義,定義才會分配存儲空間。(注意:經過測試在GCC中,這樣定義變數是不能通過編譯的,而在VS2013可以)

Ⅱ 【求助c語言】,凡是函數中未指定存儲類別的全局變數,其隱含的存儲類別為

全局變數其默認儲存類型都是extern

而局部變數的默認儲存類型是
auto,
函數中聲明的變數是局部變數,所以原題中說
「函數中未指定存儲類別的全局變數」
這句本身就有問題。
記著:
全局變數
extern
局部變數
auto

Ⅲ 函數的隱含存儲類別是()

函數的存儲類型指的是其他文件模塊可否訪問,其類別可以是extern或static。

static是指該函數只能被本源程序文件道中的模塊訪問。extern是指可被本源程序文件外的模塊訪問。

C語言中函數的存儲類型隱含為版全局的,因此默認為extern。

函數內定義的變數,默權認作用域在本函數內,即其類型是auto。

(3)隱含存儲類別擴展閱讀:

在C語言中,提供了四種存儲類型的存儲說明符:auto、Register、Extern和static。這四個存儲類別說明符有兩個存儲術語:自動存儲術語和靜態存儲術語。

「自動」和「寄存器」對應的是自動存儲周期。具有自動存儲周期的變數在進入聲明變數的塊時被創建,在塊活動時存在,在塊退出時被撤銷。在函數中定義的變數成為局部變數。在一些C教科書中,局部變數被稱為automatic,這與使用可選關鍵字auto定義局部變數的做法一致。

Extern通常用於變數聲明:在*中的另一個文件中引用全局變數。在*.h中應該使用extern來聲明全局變數。

Ⅳ c語言中,函數的隱含存儲類別及形參的默認存儲類別分別是

c語言中,函數的隱含存儲類別是extern
形參的默認存儲類別是auto

Ⅳ C語言中函數隱含存儲類型是什麼

函數的隱含存儲類型是extern,按照c語言的原則,函數隱含為全局都可以訪問,因此默認為extern,而auto只用於變數,是變數的隱含存儲類型。

Ⅵ 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.static C.extern D.register

C。

C語言規定,只要在定義函數時不進行存儲類型的顯式說明,函數的存儲類型就隱含為外部類型,即extern型,外部類型允許其他文件中的函數調用。

實際上函數的聲明和定義都不需要添加extern關鍵字,在實際使用的時候也最好不要添加關鍵字。

如果一個函數是不會被其它文件調用的,那麼這個函數應該被聲明成static的。

如:

extern int func(void){

return 0;

}

int func(void){

return 0;

}

是等價的,另外

extern int func(void);

int func(void);是等價的。

(7)隱含存儲類別擴展閱讀:

函數調用的一般形式為:

函數名(實參表列);

如果是調用無參函數,則"實參表列"可以沒有,但括弧不能省略。如果實參表列包含多個實參,則個參數間用逗號隔開。實參與形參的個數應相等,類型應一致。

實參與形參按順序對應,一一傳遞數據。但應說明,如果實參表列包括多個實參,對實參求值的順序並不是確定的,有的系統按自左至右順序求實參的值,有的系統則按自右至左順序

網路-c函數

熱點內容
sql表添加記錄 發布:2025-02-01 11:22:08 瀏覽:864
word編輯加密 發布:2025-02-01 11:18:53 瀏覽:571
php變數文本 發布:2025-02-01 11:10:46 瀏覽:426
音悅台上傳mv 發布:2025-02-01 11:05:02 瀏覽:516
微信如何設置訪問限制 發布:2025-02-01 10:43:06 瀏覽:335
b站緩存視頻下架還有嗎 發布:2025-02-01 10:37:52 瀏覽:940
e卡通初始密碼是多少 發布:2025-02-01 10:31:55 瀏覽:127
phppost上傳文件 發布:2025-02-01 10:26:42 瀏覽:105
伺服器不能寫入ip地址 發布:2025-02-01 10:18:56 瀏覽:129
青驕如何重置賬號密碼 發布:2025-02-01 09:57:51 瀏覽:520