C語(yǔ)言初始化效率問題及關(guān)鍵字解釋_第1頁(yè)
C語(yǔ)言初始化效率問題及關(guān)鍵字解釋_第2頁(yè)
C語(yǔ)言初始化效率問題及關(guān)鍵字解釋_第3頁(yè)
C語(yǔ)言初始化效率問題及關(guān)鍵字解釋_第4頁(yè)
C語(yǔ)言初始化效率問題及關(guān)鍵字解釋_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第頁(yè)共頁(yè)C語(yǔ)言初始化效率問題及關(guān)鍵字解釋C語(yǔ)言初始化效率問題及關(guān)鍵字解釋C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目的是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。本文主要介紹C語(yǔ)言初始化效率問題以及關(guān)鍵字解釋。一、初始化效率1、在靜態(tài)變量的初始化中,我們可以把可執(zhí)行程序文件想要初始化的值放在當(dāng)程序執(zhí)行時(shí)變量將會(huì)使用的位置。當(dāng)可執(zhí)行文件載入到內(nèi)存時(shí),這個(gè)已經(jīng)保存了正確初始值的位置將賦值給那個(gè)變量,完成這個(gè)任務(wù)并不需要額外的時(shí)間,也不需要額外的指令,變量將會(huì)得到正確的值、2、自動(dòng)變量當(dāng)程序鏈接時(shí)還無(wú)法判斷自動(dòng)變量的存儲(chǔ)位置。事實(shí)上,函數(shù)的部分變量在函數(shù)的每次調(diào)用中可能占據(jù)不同的位置。基于這個(gè)理由,自動(dòng)變量沒有缺省的初始值,而顯示的初始化將在代碼塊的其實(shí)出插入一條隱式的賦值語(yǔ)句。一句話總結(jié);部分變量的初始化與分開寫毫無(wú)區(qū)別即什么時(shí)候使用變量什么時(shí)候聲明,盡量重用,不要讓他隱式初始化,浪費(fèi)內(nèi)存static關(guān)鍵字的修飾。當(dāng)它用于函數(shù)定義時(shí),或用于代碼塊之外的變量聲明時(shí),static關(guān)鍵字用于修改標(biāo)識(shí)符的鏈接屬性,從external改為internal,但標(biāo)識(shí)符的存儲(chǔ)類型和作用域不受影響。用這種方式聲明的函數(shù)或變量只能在聲明他們的文件中訪問??偨Y(jié):一下以文件解釋inta;//a變量存儲(chǔ)在靜態(tài)內(nèi)存特點(diǎn):在程序運(yùn)行之前創(chuàng)立可以被其他的C文件訪問以及它的下方函數(shù)使用初始化值為0=================staticinta;特點(diǎn):在程序運(yùn)行之前存在靜態(tài)內(nèi)存存儲(chǔ)不能被其他文件訪問================代碼塊中的變量staticinta;靜態(tài)變量與inta;(部分變量)的區(qū)別是:一個(gè)存儲(chǔ)在靜態(tài)內(nèi)存也就是普通內(nèi)存另一個(gè)是部分變量,也就是運(yùn)行時(shí)堆棧函數(shù)上添加static的話:不能被其他的文件訪問該函數(shù)幾個(gè)關(guān)鍵字的處理static靜態(tài)內(nèi)存auto運(yùn)行時(shí)堆棧register硬件存放器external引用外部文件變量函數(shù)internal引用內(nèi)部文件變量函數(shù)=======================關(guān)于代碼塊變量被static修飾保證該函數(shù)屢次調(diào)用時(shí),我們?yōu)榱朔乐乖撟兞坎蛔冞M(jìn)展的處理比方我們進(jìn)展了屢次的調(diào)用二、關(guān)鍵字解釋變量的存儲(chǔ)類型(storageclass)是指存儲(chǔ)變量值的內(nèi)存類型。變量的存儲(chǔ)類型決定變量何時(shí)創(chuàng)立、何時(shí)銷毀以及它的值將保持多久。有三個(gè)地方可以用于存儲(chǔ)變量:普通內(nèi)存、運(yùn)行時(shí)堆棧、硬件存放器。在這三個(gè)地方存儲(chǔ)的變量具有不同的特性。變量的缺省存儲(chǔ)類型取決于它的聲明位置。但凡在任何代碼塊之外聲明的變量總是存儲(chǔ)于靜態(tài)內(nèi)存中,也就是不屬于堆棧的內(nèi)存,這類變量成為靜態(tài)變量。對(duì)于這類變量,你無(wú)法為他們制定其他存儲(chǔ)類型。靜態(tài)變量在程序運(yùn)行之前創(chuàng)立,在程序的整個(gè)執(zhí)行期間始終存在。它始終保持原先的值,除非給它賦一個(gè)不同的值或者程序完畢。在代碼塊內(nèi)部聲明的變量的缺省存儲(chǔ)類型是自動(dòng)的(automatic),也就是說(shuō)他存儲(chǔ)于堆棧中,成為自動(dòng)變量。有一個(gè)關(guān)鍵字auto就是用修飾這種存儲(chǔ)類型的,但它極少使用,因?yàn)榇a塊中的變量在缺省情況下就是自動(dòng)變量在程序執(zhí)行到聲明自動(dòng)變量的代碼塊時(shí),自動(dòng)變量才被創(chuàng)立,當(dāng)程序的執(zhí)行流分開該代碼時(shí),這些自動(dòng)變量便自行銷毀。假如該代碼塊被數(shù)次執(zhí)行,例如一個(gè)函數(shù)被反復(fù)調(diào)用,這些自動(dòng)變量每次都將重新創(chuàng)立。在代碼塊再次執(zhí)行時(shí),這些自動(dòng)變量在堆棧中所占據(jù)的內(nèi)存位置有可能和原先的位置一樣,也可能不同。及時(shí)他們所占據(jù)的位置一樣,你也不能保證這塊呢村同時(shí)不會(huì)有其他的用處,因此,我們可以說(shuō)自動(dòng)變量在代碼塊執(zhí)行完畢后就消失。當(dāng)代碼塊再次執(zhí)行時(shí),他們的值一般并不是上次執(zhí)行時(shí)的值。對(duì)于在代碼塊內(nèi)部聲明的變量,假如給它加上關(guān)鍵字static,可以使他的存儲(chǔ)類型從自動(dòng)變?yōu)殪o態(tài)。具有靜態(tài)存儲(chǔ)類型的變量在整個(gè)程序執(zhí)行過(guò)程中一直存在,而不僅僅在聲明它的代碼塊的執(zhí)行時(shí)存在。注意,修改變量的'存儲(chǔ)類型并不標(biāo)示修改該變量的作用域,它任然只能在該代碼塊內(nèi)部按名字訪問。函數(shù)的形式參數(shù)不能聲明。最后,關(guān)鍵字register可以用于自動(dòng)變量的聲明,提示他們應(yīng)該存儲(chǔ)于機(jī)器的硬件存放器而不是內(nèi)存中,這類變量稱為存放器變量。通常,存放器變量比存儲(chǔ)于內(nèi)存的變量訪問起來(lái)效率更高。但是,編譯器并不一定要理財(cái)register關(guān)鍵字,假如有太多的變量被聲明為register,它只選取前幾個(gè)實(shí)際存儲(chǔ)于存放器中,其余的就按普通自動(dòng)比那輛處理。假如一個(gè)編譯器自己具有一套存放器優(yōu)化方法,它可能忽略register關(guān)鍵字,使用:使用說(shuō)明,為了加快程序的編譯速度,你希望把使用頻率最高的那些變量聲明為存放器變量,在有些計(jì)算機(jī)中,假如你把指針聲明為存放器變量,程序的效率將能得到進(jìn)步,有其是那些頻繁的執(zhí)行間接訪問操作的指針,你可以把函數(shù)的形式參數(shù)聲明為存放器變量,編譯器會(huì)在函數(shù)的起始位置生成指令,把這些值從堆棧復(fù)制到存放器中。但是,完全有可能,這個(gè)優(yōu)化措施所節(jié)省的時(shí)間和控件的開銷還抵不上復(fù)制這幾個(gè)值所用的開銷。存放器變量的創(chuàng)立和銷毀時(shí)間和自動(dòng)變量一樣,但它需要一些額外的工作。在一個(gè)使用存放器變量的函數(shù)返回之前,這些存放器先前存儲(chǔ)的值必須恢復(fù),確保調(diào)用者的存放器變量未被破壞。許多機(jī)器使用運(yùn)行時(shí)堆棧來(lái)完成這個(gè)任務(wù)。當(dāng)函數(shù)開場(chǎng)執(zhí)行時(shí),它把需要使用的所有存放器的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論