c 變數的儲存型別

2021-08-07 05:56:10 字數 2330 閱讀 1702

儲存型別是對於變數而言的。一方面,它可以反映變數的儲存空間的位置,另一方面它可以反映變數的生存期。

c++的儲存型別有四種,自動型別、靜態型別,暫存器型別和外部型別。

其格式如下:

《儲存型別》 《資料型別》 《變數名》;

1.自動型別

示例:

auto

int x;

特點:

1.採用動態分配方式,在棧區分配空間。當超出作用域時,自動釋放空間。

2.在函式內或語句內宣告時,可省略atuo關鍵字。

這個型別是我們常用的型別。

2.暫存器型別

示例:

register

int x;

特點:

1.將變數放在暫存器內,可以加快執行速度。

2.若暫存器被其它了型別 資料佔據,則暫存器型別的資料會自動被當作auto變數。

3.靜態型別

靜態型別分全域性靜態和區域性靜態兩種。區域性靜態變數有兩大特點,

1.靜態區域性變數雖然具有區域性變數的作用域,但卻有全域性變數的生存期。

2.靜態區域性變數只在第一次執行時進行初始化。

示例:

#include

using

namespace

std;

void count()

執行結果如下:

i=1,j=1

i=1,j=2

i=1,j=3

4.外部型別

外部變數使用關鍵字extern來宣告。在c++中,只有兩種情況下才使用外部變數。

(1).在同一檔案中,若變數使用在前,宣告在後,則在使用前要宣告為外部變數。

(2).當有多個檔案組成乙個完整的程式,且某乙個原始檔的變數被其它乙個或多個檔案引用時,在引用的檔案裡要用extern對該變數做外部宣告。

注意宣告與定義的區別,extern定義只能有乙個,宣告可以有多個。

示例:

/*function.cpp*/

int x =

1;//外部定義,只能有乙個

......

......

......

.....

......

......

.....

/*function1.cpp*/

extern int x;//外部宣告,可以有多個

......

......

......

.....

......

......

.....

/*function2.cpp*/

extern int x;//外部宣告,可以有多個

......

......

......

.....

......

......

.....

如果在某一檔案裡出現如下:

/*function3.cpp*/

extern

int x =2;//外部定義

則會出現重複定義的錯誤,因為function.cpp和function3.cpp裡都對x進行了定義。

實際上,通常我們會將全域性變數和全域性函式放在乙個cpp檔案裡,而將對應的全域性變數和函式的宣告放在同名的標頭檔案裡,示例:

/*function.h*/

#ifndef _function_h_

#define _function_h_

extern

int x;

extern

int y;

int add(int x, int y);

#endif

/*function.cpp*/

#include "function.h"

int x = 10;

int y = 20;

int add(int a, int b)

/*main.cpp*/

#include "demo.h"

#include

using

namespace

std;

int main()

這樣處理之後只需要到用到的地方加入相應的標頭檔案即可,例如上述程式中的function.h,從而避免了在每個檔案裡進行extern宣告。

C 變數的儲存型別

c 變數和函式包括兩個屬性 資料型別和資料的儲存型別。儲存型別是指資料在記憶體中儲存的方式。變數的儲存型別分為四種 自動型別 auto 暫存器型別 register 靜態型別 static 外部型別 extern 其中,自動型別 暫存器型別的變數屬於動態變數 靜態型別 外部型別的變數屬於靜態變數。1...

c 變數儲存型別

extern 儲存型別 只宣告而不定義變數,變數的宣告只是告訴編輯器變數的名稱和資料型別 變數的定義是給變數分配儲存區域 優點就是可以在多個檔案裡面共享乙個全域性變數,static 儲存型別 static指的是靜態變數 又叫永續性變數 靜態變數分為兩種,第一種是區域性靜態變數在函式內定義的變數,該變...

C變數儲存型別

c語言程式中可以選擇變數的不同儲存形式,儲存型別分別為靜態儲存和動態儲存。我們可以通過儲存類修飾符來告訴編譯器要處理什麼樣的型別變數,具體有以下4種 auto 自動 static 靜態 register 暫存器 extern 外部 auto關鍵字是宣告乙個區域性變數為自動的,這就意味每次執行到定義該...