亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

解析C++中的5個存儲類的作用

2020-01-26 14:36:49
字體:
來源:轉載
供稿:網友

存儲類定義 C++ 程序中變量/函數的范圍(可見性)和生命周期。這些說明符放置在它們所修飾的類型之前。下面列出 C++ 程序中可用的存儲類:

  • auto
  • register
  • static
  • extern
  • mutable

存儲類說明符可以分為兩個存儲類:自動存儲類(autmatic storage class)和靜態存儲類(static storage class)。關鍵字auto和regtster用來聲明自動存儲類變量。這種變量在進入聲明的塊時生成,在塊活動期間存在,在退出這個塊時刪除。

只有變量能作為自動存儲類。函數的局部變量和參數通常是自動存儲類。存儲類說明符auto顯式聲明變量為自動存儲類。例如,下列聲明表示float變量x和y是自動存儲類的局部變量,即只在定義該變量的函數體中存在:

auto float x,y;

局部變量默認為自動存儲類,因此關鍵字auto很少使用。
register聲明通常是不需要的。如今的優化編譯器通常能識別經常使用的變量,并決定將其教在寄存器中而不需要程序員進行register聲明。
關鍵字extern和static是用來聲明靜態存儲類變量和函數的標識符。這種變量從程序開始執行時就存在。對于變量,程序開始執行時就分配和初始化存儲空間;對于函數,從程序開始執行時就存在函數名。但是,盡管變量和函數名從程序開始執行時起就存在,但這并不是說這些標識符可以在整個程序中使用。
靜態存儲類有兩種標識符:外部標識符(如全局變量和函數名)與存儲類說明符Static中聲明的局部變量。全局變量和函數名默認為存儲類說明符extern。全局變量生成時將變量聲明放在任何函數定義之外.在整個程序執行期間保存該全局變量的值。全局變量和函數可以由文件中已聲明或定義的任何函數引用。

下面我們具體來看一下:
auto 存儲類

auto 存儲類是所有局部變量默認的存儲類。

{  int mount;  auto int month;}

上面的實例定義了兩個帶有相同存儲類的變量,auto 只能用在函數內,即 auto 只能修飾局部變量。

register 存儲類

register 存儲類用于定義存儲在寄存器中而不是 RAM 中的局部變量。這意味著變量的最大尺寸等于寄存器的大?。ㄍǔJ且粋€詞),且不能對它應用一元的 '&' 運算符(因為它沒有內存位置)。

{  register int miles;}

寄存器只用于需要快速訪問的變量,比如計數器。還應注意的是,定義 'register' 并不意味著變量將被存儲在寄存器中,它意味著變量可能存儲在寄存器中,這取決于硬件和實現的限制。
static 存儲類

static 存儲類指示編譯器在程序的生命周期內保持局部變量的存在,而不需要在每次它進入和離開作用域時進行創建和銷毀。因此,使用 static 修飾局部變量可以在函數調用之間保持局部變量的值。
static 修飾符也可以應用于全局變量。當 static 修飾全局變量時,會使變量的作用域限制在聲明它的文件內。
在 C++ 中,當 static 用在類數據成員上時,會導致僅有一個該成員的副本被類的所有對象共享。

#include <iostream>// 函數聲明 void func(void);static int count = 10; /* 全局變量 */main(){  while(count--)  {    func();  }  return 0;}// 函數定義void func( void ){  static int i = 5; // 局部靜態變量  i++;  std::cout << "i is " << i ;  std::cout << " and count is " << count << std::endl;}

當上面的代碼被編譯和執行時,它會產生下列結果:

i is 6 and count is 9i is 7 and count is 8i is 8 and count is 7i is 9 and count is 6i is 10 and count is 5i is 11 and count is 4i is 12 and count is 3i is 13 and count is 2i is 14 and count is 1i is 15 and count is 0

extern 存儲類

extern 存儲類用于提供一個全局變量的引用,全局變量對所有的程序文件都是可見的。當您使用 'extern' 時,對于無法初始化的變量,會把變量名指向一個之前定義過的存儲位置。
當您有多個文件且定義了一個可以在其他文件中使用的全局變量或函數時,可以在其他文件中使用 extern 來得到已定義的變量或函數的引用??梢赃@么理解,extern 是用來在另一個文件中聲明一個全局變量或函數。
extern 修飾符通常用于當有兩個或多個文件共享相同的全局變量或函數的時候,如下所示:
第一個文件:main.cpp

#include <iostream>int count ;extern void write_extern();main(){  count = 5;  write_extern();}

第二個文件:support.cpp

#include <iostream>extern int count;void write_extern(void){  std::cout << "Count is " << count << std::endl;}

在這里,第二個文件中的 extern 關鍵字用于聲明已經在第一個文件 main.cpp 中定義的 count?,F在 ,編譯這兩個文件,如下所示:

$g++ main.cpp support.cpp -o write

這會產生 write 可執行程序,嘗試執行 write,它會產生下列結果:

$./write5

mutable 存儲類

mutable 說明符僅適用于類的對象,這將在本教程的最后進行講解。它允許對象的成員替代常量。也就是說,mutable 成員可以通過 const 成員函數修改。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩av在线高清| 成人动漫网站在线观看| 欧美激情一区二区三区在线视频观看| 亚洲加勒比久久88色综合| 亚洲国产精彩中文乱码av在线播放| 2020久久国产精品| 国产精品久久久久久久久久99| 日韩中文字幕视频在线观看| 欧美激情国产日韩精品一区18| 91av国产在线| 欧美激情在线播放| 福利一区福利二区微拍刺激| 国产成人亚洲综合| 久热精品视频在线观看一区| 日韩一区二区在线视频| 在线成人激情黄色| 欧美激情一级二级| 综合136福利视频在线| 日韩电影中文字幕在线| 在线看日韩欧美| 中文字幕亚洲无线码在线一区| 久久久久久久久久久网站| 中文字幕一区日韩电影| 精品久久久久久久久国产字幕| 久久久久久久久久久亚洲| 国产美女搞久久| 青青久久aⅴ北条麻妃| 亚洲自拍偷拍第一页| 国产精品福利在线| 91精品久久久久久久久久| 亚洲aⅴ日韩av电影在线观看| 欧美最猛性xxxx| 一区二区三区精品99久久| 欧美极品xxxx| 亚洲91精品在线观看| 日韩电影在线观看免费| 国产丝袜一区二区三区| 奇米一区二区三区四区久久| 91久久精品久久国产性色也91| 日韩欧美在线观看| 欧美中文字幕视频| 欧美激情视频网址| 国产在线久久久| 欧美性猛交xxxx乱大交3| 国产精品久久久久久久久久久久久| 亚洲午夜未满十八勿入免费观看全集| 裸体女人亚洲精品一区| 亚洲欧美日韩图片| 欧美日韩国产91| 欧美日韩亚洲视频| 亚洲а∨天堂久久精品喷水| 欧美成人午夜激情视频| 成人高清视频观看www| 成人网址在线观看| 亚洲成人av在线| 亚洲精品国产福利| 亚洲国产精品国自产拍av秋霞| 国产999在线| 欧美高清视频在线播放| 国产欧美精品日韩精品| 国产精品高潮呻吟视频| 91丝袜美腿美女视频网站| 国产区精品在线观看| 国产精品嫩草影院一区二区| 日韩视频在线免费观看| 日韩有码在线视频| 91精品国产综合久久久久久蜜臀| 亚洲第一精品夜夜躁人人躁| 欧美视频中文字幕在线| 亚洲乱码国产乱码精品精| 国产成人avxxxxx在线看| 日韩欧美一区二区三区久久| 亚洲黄色av女优在线观看| 成人免费视频在线观看超级碰| 欧美激情视频网址| 欧美大片免费观看在线观看网站推荐| 欧美在线日韩在线| 亚洲美女黄色片| 亚洲欧美制服第一页| 97视频在线免费观看| www高清在线视频日韩欧美| 日韩精品中文字幕在线播放| 成人信息集中地欧美| 26uuu亚洲伊人春色| 色综合天天狠天天透天天伊人| 久久久亚洲影院你懂的| 亚洲成人激情视频| 国产精品一区二区3区| 久久精品国产v日韩v亚洲| 亚洲国产一区自拍| 日韩欧美国产中文字幕| 欧美激情免费观看| 成人福利网站在线观看| 日本91av在线播放| 成人黄色片在线| 欧美激情久久久久| 亚洲国产成人爱av在线播放| 美女福利视频一区| 久久久久久久久中文字幕| 欧美第一页在线| 一区二区三区四区视频| 日韩免费av片在线观看| 成人久久18免费网站图片| 国内久久久精品| 菠萝蜜影院一区二区免费| 超薄丝袜一区二区| 久久中文字幕视频| 国产精品极品美女在线观看免费| 久久久久久中文字幕| 亚洲成av人乱码色午夜| 91成人免费观看网站| 久国内精品在线| 亚洲成人精品视频在线观看| 91在线观看欧美日韩| 亚洲精品美女久久| 一区二区三区四区在线观看视频| 91精品国产91久久久久| 在线视频中文亚洲| 日韩高清人体午夜| 欧美日韩在线看| 欧美电影免费观看电视剧大全| 欧美xxxwww| 中文字幕视频在线免费欧美日韩综合在线看| 久久久精品国产网站| 91网站在线看| 久久久之久亚州精品露出| 中文字幕日韩电影| 欧美午夜激情在线| 欧美黑人一级爽快片淫片高清| 97久久超碰福利国产精品…| 国产精品久久久久久久久久久新郎| 色偷偷偷亚洲综合网另类| 久久久久中文字幕2018| 久久久久久久久久亚洲| 深夜精品寂寞黄网站在线观看| 日韩在线欧美在线| 亚洲网站在线播放| 91国产视频在线播放| 亚洲理论在线a中文字幕| 精品国产依人香蕉在线精品| 亚洲老板91色精品久久| 精品中文视频在线| 日韩精品久久久久| 91精品久久久久久久久久| 欧美福利视频网站| 欧美有码在线视频| 亚洲深夜福利视频| 国产亚洲在线播放| 日韩欧美精品网站| 日本19禁啪啪免费观看www| 91精品中文在线| 亚洲丝袜一区在线| 欧美限制级电影在线观看| 91tv亚洲精品香蕉国产一区7ujn| 亚洲激情自拍图| 国产在线拍偷自揄拍精品| 国产精品吊钟奶在线| 色噜噜国产精品视频一区二区| 97福利一区二区| 精品毛片三在线观看| 国产欧美一区二区三区久久| 日韩精品在线观看一区| 美日韩在线视频| 国产一区二区三区直播精品电影|