c語言中的儲存類說明符有哪些?各自的含義如何

2022-02-18 02:48:37 字數 3877 閱讀 6365

1樓:別樣根芽

其實,這是c中的基礎,但是若不是對c有透徹的理解,絕對回答不清楚!

推薦的參考資料:c primer plus ,其中有一章專門講解這個;

在理解c的儲存類說明符之前,首先要搞懂的概念有:作用域、生存週期、連結屬性

c中存在如下的作用域:**塊作用域、檔案作用域

c中變數的生存週期:自動生存週期(自動變數)、靜態生存週期(靜態變數,在程式執行期間始終存在)

c中變數(函式)的連結屬性分為:靜態連線屬性、自動連結屬性,由static關鍵字標誌

c中的儲存類說明符實際上是上述屬性的不同組合(此處只針對變數而言):

auto 具有**塊作用域,自動生存週期,外部或者內部連結屬性

register 具有**塊作用域,自動生存週期,外部或者內部連結屬性

static 具有**塊或者檔案作用域、靜態生存週期、內部連結

extern 具有檔案作用域(該關鍵字用於全域性變數)、靜態生存週期、外部連結

以上措辭或有不嚴謹之處,詳情請參考參考資料()!

2樓:影子二號

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

其中auto和register對應自動儲存期。具有自動儲存期的變數在進入宣告該變數的程式塊是被建立,它在該程式塊活動時存在,退出該程式塊時撤銷。關鍵字extern和static用來說明具有靜態儲存期的變數和函式。

用static宣告的區域性變數只能被定義該變數的函式所識別,但是不同於自動變數的是,static變數在其函式被呼叫退出後,仍保留其值。下次函式被呼叫時,可以訪問最近一次被修改後的值。

這個是我找到的,把**給你吧

3樓:匿名使用者

在c語言中,儲存類別包括

4樓:佛韋

四種變數儲存型別。說明符如下:

auto static extern register

一、auto

auto稱為自動變數。

區域性變數是指在函式內部說明的變數(有時也稱為自動變數)。用關鍵字auto進

行說明, 當auto省略時, 所有的非全程變數都被認為是區域性變數, 所以auto實際上

從來不用。

二、static

static稱為靜態變數。根據變數的型別可以分為靜態區域性變數和靜態全程變數。

1. 靜態區域性變數

它與區域性變數的區別在於: 在函式退出時, 這個變數始終存在, 但不能被其它

函式使用, 當再次進入該函式時, 將儲存上次的結果。其它與區域性變數一樣。

2. 靜態全程變數

turbo c將大型程式分成若干獨立模組檔案分別編譯, 然後將所有模組

的目標檔案連線在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態

全程變數就是指只在定義它的原始檔中可見而在其它原始檔中不可見的變數。它與

全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它原始檔使用,

而靜態全程變數卻不能再被說明為外部的, 即只能被所在的原始檔使用。

三、extern

extern稱為外部變數。為了使變數除了在定義它的原始檔中可以使用外, 還要

被其它檔案使用。因此, 必須將全程變數通知每一個程式模組檔案, 此時可用

extern來說明。

四、register

register稱為暫存器變數。

打字不易,如滿意,望採納。

5樓:匿名使用者

a。儲存類別有好幾種的,a只是其中一個的

6樓:匿名使用者

a 靜態 正確

b浮點型別

c整型bc是資料型別,所以錯

d暫存器

d是儲存器,所以錯

7樓:匿名使用者

1、c語言中的儲存型別有static 、auto、extern、及register,函式預設的儲存型別應該是extern,意思是具有外部連結性的。一般來說,會通過extern來宣告函式。

2、比如下面的**,在1.c中定義一個函式,函式的宣告寫在1.h標頭檔案中,在2.c中通過新增1.h的標頭檔案,來宣告及呼叫函式f()。

//1.c

void f()

//1.h

extern void f();

//2.c

#include "1.h"

int main()

c語言中共有哪幾種儲存型別?

8樓:匿名使用者

turbo c2.0支援四種變數儲存型別。說明符如下:

auto static extern register

下面分別來介紹。

一、auto

auto稱為自動變數。

區域性變數是指在函式內部說明的變數(有時也稱為自動變數)。用關鍵字auto進

行說明, 當auto省略時, 所有的非全程變數都被認為是區域性變數, 所以auto實際上

從來不用。

區域性變數在函式呼叫時自動產生, 但不會自動初始化, 隨函式呼叫的結束, 這

個變數也就自動消失了, 下次呼叫此函式時再自動產生, 還要再賦值, 退出時又自

動消失。

二、static

static稱為靜態變數。根據變數的型別可以分為靜態區域性變數和靜態全程變數。

1. 靜態區域性變數

它與區域性變數的區別在於: 在函式退出時, 這個變數始終存在, 但不能被其它

函式使用, 當再次進入該函式時, 將儲存上次的結果。其它與區域性變數一樣。

2. 靜態全程變數

turbo c2.0允許將大型程式分成若干獨立模組檔案分別編譯, 然後將所有模組

的目標檔案連線在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態

全程變數就是指只在定義它的原始檔中可見而在其它原始檔中不可見的變數。它與

全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它原始檔使用,

而靜態全程變數卻不能再被說明為外部的, 即只能被所在的原始檔使用。

三、extern

extern稱為外部變數。為了使變數除了在定義它的原始檔中可以使用外, 還要

被其它檔案使用。因此, 必須將全程變數通知每一個程式模組檔案, 此時可用

extern來說明。

四、register

register稱為暫存器變數。它只能用於整型和字元型變數。定義符register說

明的變數被turbo c2.0儲存在cpu的暫存器中, 而不是象普通的變數那樣儲存在內

存中, 這樣可以提高運算速度。但是turbo c2.0只允許同時定義兩個暫存器變數,

一旦超過兩個, 編譯程式會自動地將超過限制數目的暫存器變數當作非暫存器變數

來處理。因此, 暫存器變數常用在同一變數名頻繁出現的地方。

另外, 暫存器變數只適用於區域性變數和函式的形式引數, 它屬於auto型變數,

因此, 不能用作全程變數。定義一個整型暫存器變數可寫成:

register int a;

對於以上所介紹的變數型別和變數儲存型別將會在以後的學習中, 通過例行程

序中的定義、使用來逐漸加深理解。

9樓:匿名使用者

分為四種

auto static extern register

c語言中格式說明符i是什麼意思C語言中格式說明符i是什麼意思

i 就是 d.輸出帶符號的十進位制整型 i 是老式寫法。i integer 英文 整數的意思 d decimal 英文 十進位制整數的意思 i表示有符號十進位制整數 它與 d相比較的優點 i可以自動將輸入的八進位制或十六進位制轉換為十進位制 表示輸出帶符號的十進位制數。其相當於 d.輸出帶符號的十進...

在C語言中,一維陣列的定義方式為 型別說明符陣列名

例 int array 10 含義 定義了一個陣列,陣列名為array,有10個元素,元素的型別均為整型。這10個元素名分別是 array 0 array 1 array 9 一維陣列的定義方式為 型別名 陣列名 元素個數 如 int a 5 如果進行初始化,如 int a 5 在c語言中,一維陣列...

C語言中的初等運算子有哪些c語言中有哪些運算子,各有什麼功能?

1級 左結合 圓括號 下標運算子 指向結構體成員運算子 結構體成員運算子。2級 右結合 邏輯非運算子 按位取反運算子 字首增量運算子 字首減量運算子 正號運算子 負號運算子 型別 型別轉換運算子 指標運算子 地址運算子 sizeof長度運算子。3級 左結合 乘法運算子 除法運算子 取餘運算子。4級 ...