寄存器變量的存儲(chǔ)類別
寄存器是cpu的一部分,是計(jì)算機(jī)中速度最快的存儲(chǔ)器,分為 通用寄存器、專用寄存器、段寄存器、其他寄存器,每個(gè)寄存器存儲(chǔ)一種類型的變量,各司其職,這樣說來,又分為累加器、源變址寄存器、基址寄存器、計(jì)數(shù)寄存器、狀態(tài)寄存器等等寄存器變量,顧名思義,就是存貯在寄存器里的變量。由于操作寄存器的速度遠(yuǎn)高于操作內(nèi)存,但寄存器的數(shù)量有限,所以把最頻繁使用的數(shù)據(jù)存儲(chǔ)在寄存器里,有效地提高程序運(yùn)行速率。C語(yǔ)言定義為 register int a;
C語(yǔ)言的變量有4種存儲(chǔ)類型,分別是auto(自動(dòng)型)、static(靜態(tài)型)、register(寄存器型)和extern(外部型)。在定義或說明一個(gè)變量時(shí)可以加上存儲(chǔ)類型關(guān)鍵字,以限定其存儲(chǔ)類別。
存儲(chǔ)類型決定了系統(tǒng)將在哪一個(gè)數(shù)據(jù)存儲(chǔ)區(qū)為變量分配存儲(chǔ)空間。auto型將在堆棧區(qū)分配存儲(chǔ)空間;static型將在靜態(tài)數(shù)據(jù)區(qū)分配存儲(chǔ)空間;register型將在CPU內(nèi)部的寄存器中分配存儲(chǔ)空間;而extern將不為變量分配存儲(chǔ)空間,extern聲明該變量在別的地方已經(jīng)分配了存儲(chǔ)空間。
變量存儲(chǔ)類型關(guān)鍵字只需加在變量定義語(yǔ)句類型關(guān)鍵字前面即可。
char ch1;/*定義了一個(gè)char型變量ch1,其存儲(chǔ)類型默認(rèn)為自動(dòng)型(必須是內(nèi)部變量)*/
static char ch2;/*定義了一個(gè)char型變量ch2,其存儲(chǔ)類型指定為靜態(tài)型*/
注意:以上auto型是對(duì)內(nèi)部變量而言,對(duì)于外部變量不存在自動(dòng)型的問題。內(nèi)部變量自動(dòng)在堆棧區(qū)分配空間。事實(shí)上,內(nèi)部變量默認(rèn)為自動(dòng)型,所以auto限定詞沒有任何用處。
變量的存儲(chǔ)類別
動(dòng)態(tài)存儲(chǔ)與靜態(tài)存儲(chǔ)
從變量的產(chǎn)生時(shí)間上可以分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)。
靜態(tài)存儲(chǔ)就是指程序運(yùn)行分配固定的存儲(chǔ)方式,而動(dòng)態(tài)存儲(chǔ)則是在程序運(yùn)行期間根據(jù)需要?jiǎng)討B(tài)的分配存儲(chǔ)空間。
auto變量
auto關(guān)鍵字就是修飾一個(gè)局部變量為自動(dòng)的,每次執(zhí)行到定義該變量是都會(huì)產(chǎn)生一個(gè)新的變量,并對(duì)其重新進(jìn)行初始化。
局部變量的默認(rèn)存儲(chǔ)方式就是auto,定義時(shí)可以忽略
static變量
static變量為靜態(tài)變量,將函數(shù)內(nèi)部和外部的變量聲明成static的意義是不一致的。
對(duì)于局部變量來說,static變量和auto變量是相對(duì)而言的。在語(yǔ)句塊執(zhí)行期間,static變量將始終保持他的值(地址不變),并且初始化操作只在第一次執(zhí)行時(shí)起作用。
register變量
register變量稱為寄存器存儲(chǔ)類變量。使用register的目的是把某個(gè)局部變量存放在計(jì)算機(jī)的某個(gè)硬件寄存器而不是內(nèi)存中。這樣的好處是可以提高程序的運(yùn)行速度,不過這只是反映了程序員的主觀意愿,實(shí)際上編輯器可以忽略register對(duì)變量的修飾。
用戶無法獲得寄存器變量的地址,因?yàn)榻^大多數(shù)計(jì)算機(jī)的硬件寄存器都不占用內(nèi)存地址。而且即時(shí)編譯器忽略了register而把變量存放在可設(shè)定的內(nèi)存中,也是無法獲取變量的地址的。
如果想要有效的利用寄存器register關(guān)鍵字,必須向匯編語(yǔ)言程序員那樣了解處理器的內(nèi)部結(jié)構(gòu),知道可用于存放變量的寄存器數(shù)量,種類以及工作方式。但是,在不同的計(jì)算機(jī)對(duì)于這些細(xì)節(jié)可能是不同的,因此,對(duì)于一個(gè)要具備可移植的程序來說,register的作用并不大/
extern變量
extern變量稱為外部存儲(chǔ)變量.extern聲明了程序中將要用到但尚未定義的外部變量。通常,外部存儲(chǔ)類都用于聲明在另一個(gè)轉(zhuǎn)換單元中定義的常量。
一個(gè)工程是由多個(gè)C文件組成的。這些源代碼文件分別編譯,然后鏈接成一個(gè)可執(zhí)行模塊。把這樣的一個(gè)程序作為一個(gè)工程進(jìn)行管理,并且生成一個(gè)工程文件來記錄所包含的所有源代碼文件
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說] 監(jiān)控云服務(wù)器怎么架設(shè)? 2023-10-24
- [電子說] uboot的基本概念和啟動(dòng)流程分析 2023-10-24
- [電子說] 中科曙光助力實(shí)現(xiàn)電視劇版本的長(zhǎng)期存儲(chǔ) 2023-10-24
- [控制/MCU] 單片機(jī)的三大功能 2023-10-24
- [電子說] 怎樣延長(zhǎng)半導(dǎo)體元器件的壽命呢? 2023-10-24
- [電子說] 您的存儲(chǔ)器堆疊了嗎?—賽靈思推出16GB HBM FPGA 2023-10-24
- [電子說] 學(xué)習(xí)STM32F103的ADC功能 2023-10-24
- [電子說] 學(xué)習(xí)STM32F103的DAC功能 2023-10-24
( 發(fā)表人:李倩 )