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

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

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

2020-05-23 14:04:53
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++中的5個存儲類的作用,存儲類是管理對象的生存期、鏈接和內存位置的類型說明符,需要的朋友可以參考下
 

存儲類定義 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
久久精品国产99国产精品澳门| 日韩av免费一区| 久久久久久亚洲精品中文字幕| 俺也去精品视频在线观看| 欧美丰满老妇厨房牲生活| 国产亚洲一区二区精品| 欧美电影第一页| 少妇高潮久久久久久潘金莲| 欧美午夜女人视频在线| 亚洲影院色无极综合| 欧美日韩在线影院| 欧美在线影院在线视频| 久久天天躁狠狠躁老女人| 欧美在线视频导航| 国产精品aaaa| 欧美一区二区三区免费视| 亚洲激情久久久| 欧美性猛交xxxx免费看漫画| 亚洲精选一区二区| 欧美激情性做爰免费视频| 日韩成人在线播放| 国产亚洲精品一区二区| 日韩欧中文字幕| 亚洲国产精品福利| 欧美日韩人人澡狠狠躁视频| 久久久天堂国产精品女人| 全球成人中文在线| 亚洲视频精品在线| 97在线视频国产| 亚洲国产一区二区三区在线观看| 日韩在线不卡视频| 97人洗澡人人免费公开视频碰碰碰| 中文字幕在线观看亚洲| 亚洲精品一区二区三区婷婷月| 欧美日韩国产成人| 久久久久久久久久国产| 亚洲三级免费看| 日本精品视频在线播放| 国产视频在线一区二区| 亚洲激情 国产| 欧美性受xxxx白人性爽| 久久久国产视频91| 欧美日韩ab片| 久久久久中文字幕2018| 在线精品国产欧美| 久久久久在线观看| 色噜噜国产精品视频一区二区| 国产精品永久免费在线| 精品一区二区三区四区| 国产欧美日韩免费| 久久综合电影一区| 亚洲最大福利视频| 在线观看日韩专区| 成人综合网网址| 精品视频在线播放免| 欧美床上激情在线观看| 欧美成年人视频网站| 亚洲精品99久久久久中文字幕| 在线看欧美日韩| 国产精品久久久久久av福利| 国产网站欧美日韩免费精品在线观看| 久久国产精品99国产精| 亚洲精品大尺度| 精品国产区一区二区三区在线观看| 国产亚洲精品日韩| 欧美成人精品在线观看| 日韩精品视频在线观看免费| 久久久精品一区| 97香蕉超级碰碰久久免费的优势| 欧美激情性做爰免费视频| 国产欧美一区二区三区在线看| 久久中国妇女中文字幕| 在线日韩av观看| 国产成人av网| 日韩av电影手机在线| 亚洲一区999| 国产欧美精品一区二区三区-老狼| 2019精品视频| 日韩av一卡二卡| 国产成人精品电影| 国产精品视频999| 亚洲成人av片| 91成人国产在线观看| www.国产精品一二区| 国产在线98福利播放视频| 97激碰免费视频| 日韩av一卡二卡| 欧美尤物巨大精品爽| 亚洲欧美色图片| 久久99热这里只有精品国产| 久久国产精品久久久久久久久久| 亚洲第一精品电影| 成人黄色片网站| 精品视频中文字幕| 亚洲国产小视频| 日韩精品在线免费观看| 成人中文字幕在线观看| 国产亚洲精品va在线观看| 中文字幕在线成人| 日韩精品在线私人| 久久久爽爽爽美女图片| 欧美专区福利在线| 国产欧美精品在线| 亚洲成人精品在线| 国产成人精品视| 亚洲精品按摩视频| 久久偷看各类女兵18女厕嘘嘘| 亚洲女人天堂av| 7777kkkk成人观看| 国产综合久久久久久| 在线观看国产精品淫| 欧美亚洲另类制服自拍| 日韩精品中文字幕有码专区| 91精品国产高清久久久久久| 国产精品美女久久久久久免费| 亚洲欧美精品在线| 国产精品电影在线观看| 国产精品十八以下禁看| 欧美亚洲成人免费| 91国产视频在线播放| 国产精品白嫩初高中害羞小美女| 国产精品日韩在线播放| 日韩免费观看网站| 91免费看片网站| 成人福利视频网| 国产日韩综合一区二区性色av| 狠狠躁夜夜躁人人躁婷婷91| 日韩av成人在线| 久热精品视频在线| 欧美一级视频免费在线观看| 国产精品免费观看在线| 国产亚洲欧美另类中文| 亚洲精品短视频| www日韩中文字幕在线看| 欧美日韩成人在线播放| 久久精品色欧美aⅴ一区二区| 国产在线视频一区| 国产女人18毛片水18精品| 日韩中文字幕久久| 亚洲乱码国产乱码精品精天堂| 国产亚洲精品久久久久久777| 韩国三级电影久久久久久| 精品国产一区二区三区四区在线观看| 国产精品扒开腿做爽爽爽视频| 国产一区二区欧美日韩| 国产在线一区二区三区| 亚洲自拍av在线| 欧美日韩另类字幕中文| 国产精品海角社区在线观看| 国产欧美久久久久久| 久久久久久久久国产| 亚洲精品一区二区在线| 久久久999成人| 日韩成人av在线| 日韩av中文字幕在线播放| 在线精品高清中文字幕| 国产日韩欧美在线播放| 亚洲一区二区福利| 精品国产福利在线| 欧美黑人国产人伦爽爽爽| 91精品中国老女人| 国内揄拍国内精品| 日日噜噜噜夜夜爽亚洲精品| 日韩最新免费不卡|