999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

全局變量的應用淺析

2016-07-10 05:38:09管瑜琳
電子技術與軟件工程 2016年7期

管瑜琳

全局變量具有全局作用域。全局變量只需在一個源文件中定義,就可以作用于所有的源文件。利用全局變量的特性,可以進行自動讀題,然后根據預置答案,從答案中進行正確挑選,自動進行人機對話。

【關鍵詞】全局變量 存儲區域 應用淺析

自動回答題庫中的問題,在沒有人工智能AlphaGo的情況下,是否可以實現?答案顯然是有可能的。

在沒有超級計算機,沒有云計算,沒有云數據的前提下,我們完全可以利用個人電腦,利用全局變量的特性,進行自動讀題,然后根據預置答案,從答案中進行正確挑選,實現偽人工智能。

1 變量定義及存儲區域

在程序語言中,對于基本數據類型量,按其值是否可變又分為常量和變量兩種。變量按作用域范圍又可分為兩種:局部變量和全局變量。除此以外,變量還有外部變量、內部變量、靜態變量以及動態變量等這些叫法。

在這里,我們只是對這些變量進行簡單的定義闡述,并區分變量各自的存儲區域,并著重說明全局變量的一些特殊應用。

1.1 變量定義

常量——在程序執行過程中,其值不能改變的量。常量可以直接用1個數來表示,稱為常數(或稱為直接常量)。

變量——在程序執行過程中,其值可以改變的量。

局部變量——Local Variable,也稱為內部變量,定義在函數內部,它的作用域僅限于函數內, 離開該函數后再使用就是錯誤的。

全局變量——Global Variable,也稱為外部變量,定義在所有函數外部,它的作用域是整個源程序。

靜態變量——就是在定義的時候,有static 修飾的變量。

動態變量——在程序執行過程中建立,隨函數的調用動態分配存儲空間,調用結束,釋放空間。

這么多變量,其實各種名稱都是相對的,例如:常量與變量,局部變量與全局變量,都是從不同的角度而言。

1.2 變量的作用域

全局變量具有全局作用域。全局變量只需在一個源文件中定義,就可以作用于所有的源文件。當然,其他不包含全局變量定義的源文件需要用extern 關鍵字再次聲明這個全局變量。

靜態局部變量具有局部作用域,它只被初始化一次,自從第一次被初始化直到程序運行結束都一直存在,它和全局變量的區別在于全局變量對所有的函數都是可見的,而靜態局部變量只對定義自己的函數體始終可見。

局部變量也只有局部作用域,它在程序運行期間不是一直存在,而是只在函數執行期間存在,函數的一次調用執行結束后,變量被撤銷,其所占用的內存也被收回。

靜態全局變量也具有全局作用域,它與全局變量的區別在于如果程序包含多個文件的話,它作用于定義它的文件里,不能作用到其它文件里,即被static關鍵字修飾過的變量具有文件作用域。這樣即使兩個不同的源文件都定義了相同名字的靜態全局變量,它們也是不同的變量。

1.3 變量的存儲區域

用戶存儲空間可以分為三個部分:程序區、靜態存儲區、動態存儲區。因此從另一個角度而言,從變量值存在的作時間(即生存期)角度來分,變量又可以分為靜態存儲方式和動態存儲方式。

靜態存儲方式:是指在程序運行期間分配固定的存儲空間的方式。

動態存儲方式:是在程序運行期間根據需要進行動態的分配存儲空間的方式。

全局變量、靜態局部變量、靜態全局變量全部都在靜態存儲區分配空間,在程序開始執行時給全局變量分配存儲區,程序行完畢就釋放。在整個程序執行過程中,它們占據固定的存儲單元,而不進行動態的分配和釋放。

局部變量、動態變量在動態存儲區分配空間。除此以外,動態存儲區還存放以下數據:動態申請的變量,函數形式參數,函數調用實的現場保護和返回地址等,即通常工程師平常提到的“堆”和“棧”(堆和棧是分別指向不同的區域)。

2 全局變量應用淺析

從定義、作用域和存儲區域等方面進行了各種闡述,可以得出以下幾個結論:

(1)動態變量由于分配的時間、次序不同,而導致地址也很有可能不同。

(2)局部變量的地址是跟其作用域相關的函數有關,因此地址可以說是固定的。

(3)靜態存儲方式的全局變量、靜態全局變量、靜態局部變量,其地址都是在編譯過程中就為其分配好了。只要bin(這個bin是泛稱,即軟件項目工程最終編譯生成目標,有可能是exe執行程序,也有可能是一個單片機的二進制文件,與最終后綴名無關)不變,其地址就不會改變。甚至可以說,庫不變,庫中的靜態存儲方式的全局變量也不會發生變更。

說了這么多,其實就是讓大家明白一點:在一個正式發布的應用程序再次升級前,這個應用程序中的靜態存儲方式的全局變量、靜態全局變量、靜態局部變量(下文簡單點只說全局變量),其地址是固定不變的,不會每次運行得到不同的值(當然這個地址是針對其所在的Task而言)。因此,如果我們得到程序某個全局變量的地址,以后可以直接對這個地址進行操作,這個地址在應用程序升級。

知道了全局變量是固定的地址,那么會有什么信息是用全局變量的?

軟件開發者為了開發方便,有時會定義全局變量以方便使用。比如在游戲中常會出現的人機對話頁面,那么怎樣才能自動讀題,自動作答呢?

人機界面對話的題庫內容肯定是個常量,但是在顯示時有可能會將內容復制到一個全局變量的buffer中,甚至標準答案可能也是固定地址。那我們可以通過人機對話對話框的固定地址來解析具體是題庫中的哪個問題,甚至將ABCD選項和標準答案進行內容匹配來判斷最終正確的選項是哪個。這樣的情況下,只要一出現人機對話,就可以知道問道問題是題庫中的哪一個,然后回答中的選項與標準答案進行比對,自動進行人機對話應答。

3 結束語

在大型程序的開發過程中,數據共享問題是一個復雜的綜合性問題,在開發之前,合理的定義全局變量的函數名和定義,能夠有效的提高讀寫效率,減少由于實際參數和形式參數的數據傳遞帶來的時間消耗。

參考文獻

[1]譚浩強.C語音程序設計(第一版)[M].北京:清華大學出版社,2004.

作者單位

上海飛機設計研究院綜合航電系統研究部 上海市 201210

主站蜘蛛池模板: 麻豆精品视频在线原创| 欧美日韩国产综合视频在线观看 | 亚洲自拍另类| 青青青视频免费一区二区| 伊伊人成亚洲综合人网7777| 日韩欧美色综合| 国产精品免费入口视频| 91丨九色丨首页在线播放 | 波多野结衣无码中文字幕在线观看一区二区 | 国产成人精品一区二区| jizz国产视频| 国产主播在线一区| 97超碰精品成人国产| 国产成人一二三| 深爱婷婷激情网| 久久www视频| 精品欧美日韩国产日漫一区不卡| 亚洲免费播放| 久久黄色小视频| 成人综合在线观看| 亚洲欧美综合精品久久成人网| 欧美日韩高清在线| 国产综合亚洲欧洲区精品无码| 亚洲三级成人| 伊人AV天堂| 好久久免费视频高清| 亚洲欧美在线综合一区二区三区| 在线免费a视频| 亚洲天堂网视频| 91一级片| 亚洲人精品亚洲人成在线| 精品一区国产精品| 另类专区亚洲| 拍国产真实乱人偷精品| 色偷偷一区二区三区| 青青草欧美| 久草视频精品| 成人在线欧美| 伊人久久大香线蕉成人综合网| 亚洲中文字幕久久无码精品A| 久久视精品| 中文字幕日韩欧美| 少妇被粗大的猛烈进出免费视频| 久久精品嫩草研究院| 国产原创第一页在线观看| 综合五月天网| 99热这里只有精品5| 亚洲永久视频| 国产精品福利尤物youwu | 狠狠躁天天躁夜夜躁婷婷| 国产哺乳奶水91在线播放| 国产小视频免费观看| 蜜臀AV在线播放| 欧美一级夜夜爽| 国产美女叼嘿视频免费看| 色久综合在线| 日本午夜影院| 久久精品一卡日本电影| 欧美国产日韩在线观看| 色综合天天操| 久久精品中文字幕免费| 亚洲区视频在线观看| 噜噜噜综合亚洲| 99成人在线观看| 一区二区在线视频免费观看| 欧美精品导航| 国产精品露脸视频| 欧美日韩一区二区在线免费观看| 国产午夜不卡| 中国毛片网| 国产精品欧美在线观看| 在线观看国产黄色| 亚洲男人天堂网址| 亚洲国产清纯| 日韩av电影一区二区三区四区| 亚洲区第一页| 国产精品久久久精品三级| 国产成人夜色91| 国产精品欧美激情| 伊人激情久久综合中文字幕| 久久特级毛片| 国产成年女人特黄特色毛片免 |