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

首頁(yè) > 編程 > C++ > 正文

細(xì)說C++全局變量、局部變量和靜態(tài)局部變量

2020-05-23 14:28:40
字體:
供稿:網(wǎng)友
我們已經(jīng)在前面學(xué)習(xí)了變量,并且能夠熟練地使用它。可是,僅僅靠這些知識(shí),有些問題仍然無(wú)法得到解決。

標(biāo)志符

首先要來介紹一下什么是標(biāo)志符。在程序設(shè)計(jì)的過程中,經(jīng)常要給變量、函數(shù)甚至是一些數(shù)據(jù)類型起名字(還包括以后的類名,對(duì)象名等)。我們把這些用戶根據(jù)一些規(guī)定,自己定義的各種名字統(tǒng)稱為標(biāo)志符(Identifier)顯然,標(biāo)志符不允許和任何保留字相同。

全局變量和局部變量

在函數(shù)這一章節(jié)中,我們說過函數(shù)體內(nèi)聲明的變量?jī)H在該函數(shù)體內(nèi)有效,別的函數(shù)是無(wú)法使用的。并且在函數(shù)運(yùn)行結(jié)束后,這些變量也將消失了。我們把這些在函數(shù)體內(nèi)聲明的變量稱為局部變量(Local Variable)。

然而,可能會(huì)遇到這樣的問題:我們想要?jiǎng)?chuàng)建一個(gè)變量作為數(shù)據(jù)緩沖區(qū)(Buffer),分別供數(shù)據(jù)生成、數(shù)據(jù)處理和數(shù)據(jù)輸出三個(gè)函數(shù)使用,三個(gè)函數(shù)都要能夠讀取或修改這個(gè)變量的值。顯然通過傳遞參數(shù)或返回值來解決這個(gè)問題是非常麻煩的。

那么,我們能否建立一個(gè)變量能夠讓這三個(gè)函數(shù)共同使用呢?在C++中,我們可以在函數(shù)體外聲明一個(gè)變量,它稱為全局變量(global variable)所謂全局,是指對(duì)于所有函數(shù)都能夠使用。當(dāng)然,在該變量聲明之前出現(xiàn)的函數(shù)是不知道該變量的存在的,于是也就無(wú)法使用它了。另外,如果我們聲明了一個(gè)全局變量之后沒有對(duì)它進(jìn)行初始化操作,則編譯器會(huì)自動(dòng)將它的值初始化為0。

下面,我們就用全局變量來實(shí)現(xiàn)剛才提出的那個(gè)問題:(程序11.1.1)
#include "iostream.h"
#include "stdlib.h"//用于產(chǎn)生隨機(jī)數(shù),不必理會(huì)
#include "time.h"//用于產(chǎn)生隨機(jī)數(shù),不必理會(huì)
#include "iomanip.h"//用于設(shè)置域?qū)?br />void makenum();
void output();
void cal();
int main()
{
   srand(time(NULL));//用于產(chǎn)生隨機(jī)數(shù),不必理會(huì)
   for (int i=0;i<4;i++)
   {
      makenum();//產(chǎn)生隨機(jī)數(shù)放入緩沖區(qū)
     cal();//對(duì)緩沖區(qū)的數(shù)進(jìn)行處理
      output();//輸出緩沖區(qū)的數(shù)值
   }
   return 0;
}
int buffer;//定義全局變量,以下函數(shù)都能使用它
void makenum()
{
   cout <<"Running make number..." <<endl;
   buffer=rand();//把產(chǎn)生的隨機(jī)數(shù)放入緩沖區(qū)
}
void cal()
{
   cout <<"Running calculate..." <<endl;
   buffer=buffer%100;
}
void output()
{
   cout <<"Running output..." <<endl;
   cout <<setw(2) <<buffer <<endl;
}

運(yùn)行結(jié)果:
Running make number...
Running calculate...
Running output...
48
Running make number...
Running calculate...
Running output...
47
Running make number...
Running calculate...
Running output...
24
Running make number...
Running calculate...
Running output...
90
以上為某次運(yùn)行得到的隨機(jī)結(jié)果??梢?,使用全局變量使得多個(gè)函數(shù)之間可以共享一個(gè)數(shù)據(jù),同時(shí)從理論上實(shí)現(xiàn)了函數(shù)之間的通訊。 

靜態(tài)局部變量

全局變量實(shí)現(xiàn)了函數(shù)之間共享數(shù)據(jù),也使得變量不再會(huì)因?yàn)槟硞€(gè)函數(shù)的結(jié)束而消亡。但是,新問題又出現(xiàn)了:一個(gè)密碼檢測(cè)函數(shù)根據(jù)調(diào)用(用戶輸錯(cuò)密碼)的次數(shù)來限制他進(jìn)入系統(tǒng)。如果把調(diào)用次數(shù)存放在一個(gè)局部變量里,顯然是不可行的。雖然全局變量可以記錄一個(gè)函數(shù)的運(yùn)行次數(shù),但是這個(gè)變量是被所有函數(shù)共享的,每個(gè)函數(shù)都能修改它,實(shí)在很危險(xiǎn)。我們現(xiàn)在需要的是一個(gè)函數(shù)運(yùn)行結(jié)束后不會(huì)消失的,并且其他函數(shù)無(wú)法訪問的變量。

C++中,我們可以在函數(shù)體內(nèi)聲明一個(gè)靜態(tài)局部變量(Static Local Variable)。它在函數(shù)運(yùn)行結(jié)束后不會(huì)消失,并且只有聲明它的函數(shù)中能夠使用它。聲明一個(gè)靜態(tài)局部變量的方法是在聲明局部變量前加上static,例如:
    static int a;
和全局變量類似,如果我們沒有對(duì)一個(gè)靜態(tài)局部變量做初始化,則編譯器會(huì)自動(dòng)將它初始化為0。

下面,我們就用靜態(tài)局部變量來模擬一下這個(gè)密碼檢測(cè)函數(shù)的功能:(程序11.1.2)
#include "iostream.h"
#include "stdlib.h"
bool password();//密碼檢測(cè)函數(shù)
int main()
{
   do
   {
   }
   while (password()!=true);//反復(fù)檢測(cè)密碼直到密碼正確
   cout <<"歡迎您進(jìn)入系統(tǒng)!" <<endl;
   return 0;
}
bool password()
{
   static numOfRun=0;//聲明靜態(tài)局部變量存放函數(shù)調(diào)用次數(shù)
   if (numOfRun<3)
   {
      int psw;
      cout <<"第" <<++numOfRun <<"次輸入密碼" <<endl;
      cin >>psw;
      if (psw==123456)
      {
         return true;
      } 
      else
      {
         cout <<"密碼錯(cuò)誤!" <<endl;
         return false;
      }
   }
   else
   {
      cout <<"您已經(jīng)輸錯(cuò)密碼三次!異常退出!" <<endl;
      exit(0);//退出程序運(yùn)行
   }
}
第一次運(yùn)行結(jié)果:
第1次輸入密碼
111111
密碼錯(cuò)誤!
第2次輸入密碼
222222
密碼錯(cuò)誤!
第3次輸入密碼
0
密碼錯(cuò)誤!
您已經(jīng)輸錯(cuò)密碼三次!異常退出!

第二次運(yùn)行結(jié)果:
第1次輸入密碼
000000
密碼錯(cuò)誤!
第2次輸入密碼
123456
歡迎您進(jìn)入系統(tǒng)!

使用靜態(tài)局部變量可以讓函數(shù)產(chǎn)生的數(shù)據(jù)更長(zhǎng)期更安全地存儲(chǔ)。如果一個(gè)函數(shù)運(yùn)行和它以前的運(yùn)行結(jié)果有關(guān),那么一般我們就會(huì)使用靜態(tài)局部變量。  
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧美激情一区二区在线| 中文字幕av第一页| 男同互操gay射视频在线看| 日韩在线观看中文字幕| 丰满少妇高潮一区二区| 男人的天堂影院| 欧美精品另类| 手机成人在线| 黄在线观看在线播放720p| 久久综合av免费| sese在线播放| 中文字幕视频在线免费欧美日韩综合在线看| 国产欧美精品日韩区二区麻豆天美| 69日小视频在线观看| 丁香久久五月| 99热精品在线播放| 91产国在线观看动作片喷水| 欧美人与禽zozzo禽性配| 国产精品一二三在线观看| 欧美成人猛片aaaaaaa| 嫩草精品影院| 欧美精品一区二区成人| 蜜桃传媒九九九| 精品视频色一区| 成人免费在线网| 国产在线欧美在线| 欧美色涩在线第一页| 精品乱码一区二区三区| 丝袜美腿小色网| 亚洲欧洲国产视频| 久久夜色邦福利网| 俺去了亚洲欧美日韩| 久久久精品视频在线观看| 亚洲欧美日韩在线高清直播| 蜜臀91精品国产高清在线观看| 亚洲激情六月丁香| 99久在线精品99re8热| 国产1区2区3区4区| 男女污视频在线观看| 亚洲区一区二| 日韩视频精品在线| av一区二区三区四区| 国产又大又硬又粗| 99国产精品白浆在线观看免费| 久久av电影| 精品福利一区二区三区| 亚洲狠狠婷婷综合久久久| 天天操天天舔天天干| 亚洲欧美制服丝袜| 老牛国产精品一区的观看方式| 久久你懂得1024| 欧美极品videos大乳护士| 国产精品久久中文| 日韩免费观看一区二区| 性欧美一区二区三区| 精品sm捆绑视频| 国产成人亚洲欧洲在线| 欧美老熟妇一区二区三区| 国产在线视视频有精品| 久久久久久久久黄色| 中文字幕第三区| 久久97精品久久久久久久不卡| 99久久激情视频| 91在线视频免费观看| 国产模特av私拍大尺度| 亚洲第一页在线视频| 国产成人免费在线观看| 男人搞女人网站| 亚洲视频在线免费看| 亚洲a级精品| 欧美久久一级| 亚洲美女激情视频| 久久精品一级片| 柠檬在线导航福利| 麻豆传媒在线观看| 国产精品视频入口| 97在线资源在| 亚洲第一免费看片| 国产理论片免费观看| 久久91亚洲精品中文字幕| 91超薄肉色丝袜交足高跟凉鞋| 国产又粗又黄又猛| 欧美91福利在线观看| 国产乱码在线观看| 在线成人欧美| 国产精品嫩草av| 亚洲一区自拍| 国产丝袜在线| 日本欧美一区二区三区乱码| 国产视频二区三区| 欧美偷拍综合| 黄色资源在线观看| 在线日韩三级| 久久成人高清| 久久不卡国产精品一区二区| 黄色99视频| 老熟妇精品一区二区三区| 欧美美女啪啪| 91在线视频| 91精品国产综合久久久久| 欧美一区国产二区| 蜜臀av一区二区三区| jizzjizz免费大全| 欧美一级日韩不卡播放免费| 欧美性受xxx黑人xyx性爽| 日韩av免费| 最新中文字幕在线| 性欧美丰满熟妇xxxx性久久久| 欧美日韩调教| 日韩成人手机在线| 日韩影院精彩在线| av在线日韩| 国产又粗又猛又爽视频| 精品日本一区二区三区在线观看| 麻豆映画在线观看| 精品人伦一区二区三电影| 国产在线日韩在线| 日韩欧美一级在线| 国产免费久久av| 欧美色图第一页| 欧美激情精品久久久久久小说| 桃乃木かなav在线播放| 免费cad大片在线观看| 精品国产乱码| 国产黑丝在线观看| 欧美日韩在线观看免费| 日韩精品在线电影| 色se01短视频永久免费| 毛片在线视频播放| 亚洲久久一区二区| 亚洲男男gay视频| 国产欧美日韩综合精品二区| 一区二区不卡视频| 综合中文字幕| 超碰超碰人人人人精品| 欧美日韩一区高清| 国产一区亚洲| 国产精品伦理一区| 91麻豆免费视频网站| 黄色一级大片在线免费看国产一| 久久综合久久综合亚洲| 亚洲性生活视频在线观看| 日韩国产在线观看一区| 国产美女久久精品| 国产精品久久久久久久成人午夜| av中文字幕免费| 999精品色在线播放| 人妻av一区二区三区| 亚洲国产精品无码av| 日本一区二区视频在线| 欧美激情成人在线视频| 亚洲一区二区免费看| 成人免费观看在线| 精品视频在线播放一区二区三区| 一区二区三区国产好的精华液| 人妻精品久久久久中文字幕| 久久精品视频在线观看榴莲视频| 国产精品久久久久一区二区三区厕所| 一个人看的www日本高清视频| 99久久久免费精品国产一区二区| 久久精品水蜜桃av综合天堂| 国产一区不卡在线| 在线观看精品一区二区三区| 尤物网精品视频| 久久99精品久久久久久久久久| 日韩08精品| 久久不卡国产精品一区二区| av福利导福航大全在线| 欧美精品久久久久久久自慰| 少妇高潮一区二区三区69| 中文字幕视频在线播放| 欧美视频在线看| 波多野结衣三级视频| 精品久久久中文| 99久久亚洲| 五月天婷婷在线视频| 精品91一区二区三区| 国产成人强伦免费视频网站| 中文字幕第2页| 日韩av综合网站| 日韩精品――色哟哟| 国产有码在线观看| 久久久久久久久久av| 亚洲成人久久久久| 国产a√精品区二区三区四区| 国产亚洲aⅴaaaaaa毛片| 曰本女人与公拘交酡| 亚洲成av在线| 尤物视频在线观看国产| 在线看污网站| 热门国产精品亚洲第一区在线| 精品一区二区三区五区六区七区| 一本到三区不卡视频| 美女激情福利视频在线观看| 国内精品视频在线观看| 一区二区三区久久| 亚洲欧美日韩综合在线| 欧美另类暴力丝袜| 狠狠躁夜夜躁人人爽天天高潮| 乱精品一区字幕二区| 亚洲视频免费观看| 在线观看国产精品日韩av| 国产国语videosex另类| 免费永久网站黄欧美| 久久精品国产成人精品| 性网爆门事件集合av| 日韩电影天堂视频一区二区| 欧美亚韩一区二区三区| 日夜操在线视频| 黄色激情在线视频| 91麻豆免费看| 日韩在线欧美在线国产在线| 欧美特黄一级视频| 91网站最新地址| 国产成人一区二区精品非洲| 免费黄色在线视频网站| 免费精品国产自产拍在| 国产美女视频免费| 狠狠久久婷婷| 人妻内射一区二区在线视频| 国产精品永久免费| 国产99精品国产| 国产色视频在线| 中文国产在线观看| 紧身裙女教师波多野结衣| 亚洲综合在线电影| 538在线观看| 国产毛片毛片毛片毛片毛片毛片| 变态黄色小视频网站| 性欧美视频videos6一9| 欧美性受xxxx黑人| 秋霞无码一区二区| 视频一区在线播放| avove在线观看| 九色精品视频在线观看| 欧美一区二区视频在线| 制服.丝袜.亚洲.另类.中文| 久久99精品久久久久久噜噜| 国产三级漂亮女教师| 日韩大片在线观看视频| 国产精品亚洲综合色区韩国| 亚洲AV成人精品| 久久露脸国产精品| 精品影视av免费| 成人av资源在线| 99精品视频免费版的特色功能| 手机在线观看国产精品| 精品久久久久久久久久久久久久久| 一区二区三区在线| 亚洲精品久久久蜜桃| 日韩精品视频免费播放| 久久久一本精品99久久精品| 麻豆免费视频网站入口| 国产精品一区二区三区不卡| 亚洲精品第1页| 人人澡人人澡人人看| 蜜臀尤物一区二区三区直播| 久久久久久久9| 国产日产欧美a一级在线| 国产欧美综合在线观看第十页| 国产乱人乱偷精品视频a人人澡| 欧美成人直播| 一级黄色片在线看| 国产精品99久| 特黄特黄的视频| 乱色588欧美| 国产免费av电影| 国产精品.com| 久草福利视频在线| 日韩欧美美女在线观看| 日本电影一区二区三区| 在线不卡欧美| 亚洲国产女人aaa毛片在线| 成人在线一级片| 亚洲国产日产av| 免费看污视频的网站| 久久国产免费| 成人高潮成人免费观看| 欧美日本韩国一区二区三区| 黄色av电影在线播放| 欧美激情一区二区三区在线| 国产亚洲综合精品| 中文字幕第22页| 精品一区二区亚洲| 精品69视频一区二区三区| 中文字幕亚洲欧美日韩| 一本大道久久a久久综合| 亚洲欧美综合自拍| 九九国产精品视频| 国产有码在线一区二区视频| 欧美伊久线香蕉线新在线| 亚洲地区一二三色| caoporm免费视频在线| 国产成人av一区| 老司机成人在线| 欧美激情啪啪| 91麻豆精品国产91久久久久推荐资源| 99久久精品国产一区二区小说| 亚州欧美一区三区三区在线| 色综合久久中文综合久久牛| 久久动漫亚洲| 免费观看成人性生生活片| 黄色网址免费| 成年人免费在线观看网站| 成人动漫一区二区在线| 久久手机在线视频| 欧美日韩在线观看一区二区| 激情 小说 亚洲 图片: 伦| 亚洲成人一二三区| 亚洲国产日韩欧美综合久久| 亚洲精品日日夜夜| 国产91精品不卡视频| 99久久夜色精品国产亚洲狼| 欧美日韩综合不卡| 国产伦精品一区二区三区照片| 欧美二区在线观看| 18禁男女爽爽爽午夜网站免费| 国产在成人精品线拍偷自揄拍| 成人激情自拍| 亚洲国产一区在线观看| 欧美高清3dfreexxxx性| 你懂的网站在线| 水中色av综合| 四虎成人精品永久免费av| 周于希免费高清在线观看| 一区二区成人国产精品| 色哺乳xxxxhd奶水米仓惠香| 久久国产精品-国产精品|