色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > C語言初始化效率問題以及關(guān)鍵字解釋

C語言初始化效率問題以及關(guān)鍵字解釋 時(shí)間:2018-09-25      來源:未知

一、初始化效率

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í)還無法判斷自動(dòng)變量的存儲(chǔ)位置。事實(shí)上,函數(shù)的局部變量在函數(shù)的每次調(diào)用中可能占據(jù)不同的位置。基于這個(gè)理由,自動(dòng)變量沒有缺省的初始值,而顯示的初始化將在代碼塊的其實(shí)出插入一條隱式的賦值語句。

一句話總結(jié);局部變量的初始化與分開寫毫無區(qū)別

即什么時(shí)候使用變量什么時(shí)候聲明,盡量重用,不要讓他隱式初始化,浪費(fèi)內(nèi)存

static 關(guān)鍵字的修飾。

當(dāng)它用于函數(shù)定義時(shí),或用于代碼塊之外的變量聲明時(shí),static關(guān)鍵字用于修改標(biāo)識符的鏈接屬性,從external改為internal,但標(biāo)識符的存儲(chǔ)類型和作用域不受影響。用這種方式聲明的函數(shù)或變量只能在聲明他們的源文件中訪問。

總結(jié):

一下以文件解釋

int a;

//a 變量存儲(chǔ)在靜態(tài)內(nèi)存

特點(diǎn):

在程序運(yùn)行之前創(chuàng)建

可以被其他的C文件訪問以及它的下方函數(shù)使用

初始化值為0

=================

static int a;

特點(diǎn):在程序運(yùn)行之前存在

靜態(tài)內(nèi)存存儲(chǔ)

不能被其他文件訪問

================

代碼塊中的變量

static int a ;

靜態(tài)變量

與int a ;(局部變量)

的區(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)榱朔乐乖撟兞坎蛔?/p>

進(jìn)行的處理比如我們進(jìn)行了多次的調(diào)用

二、關(guān)鍵字解釋

變量的存儲(chǔ)類型(storage class )是指存儲(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)變量。對于這類變量,你無法為他們制定其他存儲(chǔ)類型。

靜態(tài)變量在程序運(yùn)行之前創(chuàng)建,在程序的整個(gè)執(zhí)行期間始終存在。它始終保持原先的值,除非給它賦一個(gè)不同的值或者程序結(jié)束。

在代碼塊內(nèi)部聲明的變量的缺省存儲(chǔ)類型是自動(dòng)的(automatic),也就是說他存儲(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ì)有其他的用途,因此,我們可以說自動(dòng)變量在代碼塊執(zhí)行完畢后就消失。當(dāng)代碼塊再次執(zhí)行時(shí),他們的值一般并不是上次執(zhí)行時(shí)的值。

對于在代碼塊內(nèi)部聲明的變量,如果給它加上關(guān)鍵字static,可以使他的存儲(chǔ)類型從自動(dòng)變?yōu)殪o態(tài)。具有靜態(tài)存儲(chǔ)類型的變量在整個(gè)程序執(zhí)行過程中一直存在,而不僅僅在聲明它的代碼塊的執(zhí)行時(shí)存在。注意,修改變量的存儲(chǔ)類型并不標(biāo)示修改該變量的作用域,它任然只能在該代碼塊內(nèi)部按名字訪問。函數(shù)的形式參數(shù)不能聲明

后,關(guān)鍵字register可以用于自動(dòng)變量的聲明,提示他們應(yīng)該存儲(chǔ)于機(jī)器的硬件寄存器而不是內(nèi)存中,這類變量稱為寄存器變量。通常,寄存器變量比存儲(chǔ)于內(nèi)存的變量訪問起來效率更高。但是,編譯器并不一定要理財(cái)register關(guān)鍵字,如果有太多的變量被聲明為register,它只選取前幾個(gè)實(shí)際存儲(chǔ)于寄存器中,其余的就按普通自動(dòng)比那輛處理。如果一個(gè)編譯器自己具有一套寄存器優(yōu)化方法,它可能忽略register關(guān)鍵字,

使用:使用說明,為了加快程序的編譯速度,你希望把使用頻率高的那些變量聲明為寄存器變量,在有些計(jì)算機(jī)中,如果你把指針聲明為寄存器變量,程序的效率將能得到提高,有其是那些頻繁的執(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í)堆棧來完成這個(gè)任務(wù)。當(dāng)函數(shù)開始執(zhí)行時(shí),它把需要使用的所有寄存器的內(nèi)容都保存到堆棧中,當(dāng)函數(shù)返回時(shí),這些值再復(fù)制回寄存器中。在許多機(jī)器的硬件實(shí)現(xiàn)中,并不為寄存器指定的地址。同樣由于寄存器值的保存和恢復(fù)某一個(gè)特定的寄存器在不同的時(shí)刻所保存的值不一定相同。基于這些理由,機(jī)器并不像你提供寄存器變量的地址。

上一篇:Android滑動(dòng)效果(一)—Layout方法

下一篇:協(xié)調(diào)器還是終端設(shè)備?

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺專線:010-82525158 企業(yè)培訓(xùn)洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號-5京公海網(wǎng)安備11010802025203號

回到頂部

主站蜘蛛池模板: 亚洲国产精品无码专区在线观看 | 中文日产无乱码av在线观 | 国产精品无码专区 | 99精品欧美一区二区 | 国产成人精品午夜二三区波多野 | 日本熟日本熟妇在线视频 | 国产成人无码A区在线观看导航 | 性生交大片免费看图片 | 好爽进去了视频在线观看国版 | 视频在线观看一区二区三区 | 男人的天堂免费一区二区视频 | 色香欲综合成人免费视频 | 国产传媒精品1区2区3区 | 高清免费A级在线观看 | 国产麻豆成人AV色影视 | 在线日本中文字幕 | 亚洲av最新天堂网址 | 老女人性生交大片免费 | 性色av免费观看 | 啊灬啊灬啊灬快灬高潮少妇a片 | 黑人大群XXXX | 免费无码肉片在线观看 | 亚洲理论在线A中文字幕 | 四虎影视黄色 | 好大好硬好深好爽想要 | 国产白嫩漂亮美女在线观看 | 成全视频观看免费高清第6季 | 男女一级毛片 | 黑人又粗又大XXX精品 | 中文字幕亚洲男人的天堂网络 | 国产人妻久久精品二区三区特黄 | 成年男人裸j网站 | 国产无人区码一码二码三MBA | 亚洲高清无码视频网站在线 | 老人内射视频代码免费视频 | 中文字幕人妻无码一夲道 | 用舌头去添高潮无码视频 | 日本熟日本熟妇在线视频 | 曰批全过程免费视频在线观看无码 | 国内精品久久久久影院网站 | 亚洲成AV人最新无码不卡短片 |