** 今天為大家?guī)碜兞看鎯?chǔ)的詳細(xì)教程**
變量
在編寫C程序的過程中,我們常常會(huì)使用到變量。而基本的變量類型在前面的教程也已經(jīng)講到,在我們創(chuàng)建這些變量的時(shí)候,變量會(huì)被創(chuàng)建在內(nèi)存。值得注意的是,變量在不同的內(nèi)存中有著不同的特性,因此,我們可以通過一些關(guān)鍵字來規(guī)定變量在內(nèi)存創(chuàng)建的位置。從而達(dá)到我們想要的結(jié)果。
在C語言中,變量在內(nèi)存中的存儲(chǔ)方式主要分為靜態(tài)存儲(chǔ)和動(dòng)態(tài)存儲(chǔ)。這兩者的區(qū)別在于靜態(tài)存儲(chǔ)有固定的內(nèi)存空間,而動(dòng)態(tài)存儲(chǔ)的內(nèi)存空間是根據(jù)情況而定的。我們可以通過如下關(guān)鍵字來定義變量的存儲(chǔ)位置。
- register 變量
在C語言中,我們可以通過 register 關(guān)鍵字標(biāo)記變量,使用register關(guān)鍵字標(biāo)記的變量會(huì)創(chuàng)建在寄存器中。但是在通常情況下,這樣做沒有什么作用,因?yàn)榻^大多數(shù)的硬件的寄存器都不會(huì)占用內(nèi)存空間。所以編譯器會(huì)默認(rèn)忽視 register 關(guān)鍵字。如果想有效地使用 register 關(guān)鍵字,就要通過一些匯編指令。但是不同硬件之間的寄存器又有所不同,因此 register 關(guān)鍵字的作用不大。
- auto 變量
在C語言中,我們可以通過 auto 關(guān)鍵字創(chuàng)建一個(gè)自動(dòng)的局部變量。加上這個(gè)關(guān)鍵字的變量在每一次定義的時(shí)候都會(huì)自動(dòng)創(chuàng)建出一個(gè)新的變量,并且會(huì)對(duì)這個(gè)新的變量重新初始化。例如:
void autoAdd() {
auto int autonum = 0;
autonum =autonum + 1;
cout << autonum << endl;
}
int main() {
autoAdd();
autoAdd();
}
從結(jié)果可以看到,調(diào)用兩次函數(shù)后結(jié)果是同樣的。因?yàn)?span id="ln48xkk" class="hljs-keyword">auto修飾的變量每一次定義都會(huì)重新創(chuàng)建。
- extern 變量
在C語言中, extern 關(guān)鍵字可以聲明程序中會(huì)用到但還未定義的變量。 extern 在分文件編寫的工程中尤為重要。因?yàn)樵趯?shí)際開發(fā)中,我們都會(huì)分文件,分功能編寫。不同的文件會(huì)用到相同的變量,因此, extern 關(guān)鍵字是十分重要的。
- static 變量
在C語言中, static 關(guān)鍵字可以將變量改為靜態(tài)變量。靜態(tài)變量會(huì)將數(shù)據(jù)存儲(chǔ)在內(nèi)存的全局區(qū),全局區(qū)的數(shù)據(jù)在使用完成后釋放。因此,靜態(tài)變量可以始終保持其原本的值。
今天的內(nèi)容就到這里,下期小編將帶大家繼續(xù)學(xué)習(xí),各位看官老爺記得查閱哦~
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
內(nèi)存
+關(guān)注
關(guān)注
8文章
3042瀏覽量
74179 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28429 -
C程序
+關(guān)注
關(guān)注
4文章
255瀏覽量
36076
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
TC277如何指定該全局?jǐn)?shù)組變量的存儲(chǔ)地址的對(duì)齊方式?
定義全局?jǐn)?shù)組變量,如何指定該全局?jǐn)?shù)組變量的存儲(chǔ)地址的對(duì)齊方式
發(fā)表于 02-19 07:37
變量的存儲(chǔ)小結(jié)
變量是C語言最基礎(chǔ)也是最核心的概念,對(duì)于初學(xué)C語言的同學(xué)來說變量的存儲(chǔ)總是覺得比較混亂。這里對(duì)C的變量做一個(gè)簡(jiǎn)單的小結(jié),希望對(duì)大家有所幫助。我們看到對(duì)
發(fā)表于 10-25 15:04
變量的存儲(chǔ)小結(jié)
變量是C語言最基礎(chǔ)也是最核心的概念,對(duì)于初學(xué)C語言的同學(xué)來說變量的存儲(chǔ)總是覺得比較混亂。這里對(duì)C的變量一個(gè)簡(jiǎn)單的小結(jié),希望對(duì)大家有所幫助。我們看到對(duì)
發(fā)表于 12-02 10:52
變量的存儲(chǔ)小結(jié)
變量是C語言最基礎(chǔ)也是最核心的概念,對(duì)于初學(xué)C語言的同學(xué)來說變量的存儲(chǔ)總是覺得比較混亂。這里對(duì)C的變量做一個(gè)簡(jiǎn)單的小結(jié),希望對(duì)大家有所幫助。我們看到對(duì)
發(fā)表于 12-13 15:27
變量的存儲(chǔ)類型
變量的存儲(chǔ)類型有4種,分別是static、external、register、auto,對(duì)于每一種存儲(chǔ)類型,他們都有相應(yīng)的使用方式和特點(diǎn),下面就分別對(duì)這四種存儲(chǔ)類型介紹一下:1.sta
發(fā)表于 01-10 15:05
6657局部變量存儲(chǔ)地址異常 請(qǐng)問是什么原因?
程序Debug時(shí)進(jìn)入子函數(shù),控制臺(tái)顯示訪問0x44xxxxxx地址時(shí)出錯(cuò)。仔細(xì)一看,原來是子函數(shù)的局部變量存儲(chǔ)在這個(gè)0x44xxxxxx地址。查了datasheet,0x40000000
發(fā)表于 08-07 06:58
如何通過BLE發(fā)送一個(gè)變量存儲(chǔ)在一個(gè)智能手機(jī)上?
你好,我是Gaurav。我想收集關(guān)于PSo4-042的LDR的讀數(shù)?,F(xiàn)在我可以在一個(gè)變量中收集數(shù)據(jù)。但我不知道我怎么把它送來。1、請(qǐng)告訴我如何通過BLE發(fā)送一個(gè)變量存儲(chǔ)在一個(gè)智能手機(jī)上?謝謝您,Cyrkk.Access 02.Z
發(fā)表于 10-25 10:02
如何將變量存儲(chǔ)到PIC24FF64GA002內(nèi)存中
你好。我想把一些整數(shù)和字符串變量存儲(chǔ)到特定的數(shù)據(jù)EEPROM地址中。我使用MPLAB X 3.40、XC16和PIC24FJ64 GA02。我試著在互聯(lián)網(wǎng)上找到一些工作代碼,但是沒有。如果有人能給出一個(gè)例子/源代碼或如何將變量
發(fā)表于 04-27 13:03
51單片機(jī)中變量的存儲(chǔ)類型有什么區(qū)別
本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)中變量的存儲(chǔ)類型有什么區(qū)別。
發(fā)表于 07-03 17:41
?0次下載
【STM32】STM32 變量存儲(chǔ)在片內(nèi)FLASH的指定位置
在這里以STM32L4R5為例(官方出的DEMO板),將變量存儲(chǔ)在指定的片內(nèi)FLASH地址(0x081F8000)。一、MDK Keil軟件操作uint8_t version[12
發(fā)表于 12-02 11:06
?10次下載
評(píng)論