0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

變量的存儲(chǔ)

汽車電子技術(shù) ? 來(lái)源:我不是C神 ? 作者: 我不是C神 ? 2023-02-21 15:07 ? 次閱讀

圖片

** 今天為大家?guī)?lái)變量存儲(chǔ)的詳細(xì)教程**

變量

在編寫C程序的過(guò)程中,我們常常會(huì)使用到變量。而基本的變量類型在前面的教程也已經(jīng)講到,在我們創(chuàng)建這些變量的時(shí)候,變量會(huì)被創(chuàng)建在內(nèi)存。值得注意的是,變量在不同的內(nèi)存中有著不同的特性,因此,我們可以通過(guò)一些關(guān)鍵字來(lái)規(guī)定變量在內(nèi)存創(chuàng)建的位置。從而達(dá)到我們想要的結(jié)果。

    在C語(yǔ)言中,變量在內(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ò)如下關(guān)鍵字來(lái)定義變量的存儲(chǔ)位置。
  1. register 變量
    C語(yǔ)言中,我們可以通過(guò) 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)鍵字,就要通過(guò)一些匯編指令。但是不同硬件之間的寄存器又有所不同,因此 register 關(guān)鍵字的作用不大。
    
  2. auto 變量
    在C語(yǔ)言中,我們可以通過(guò) 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="4dvel94"    class="hljs-keyword">auto修飾的變量每一次定義都會(huì)重新創(chuàng)建。
  1. extern 變量
    在C語(yǔ)言中, extern 關(guān)鍵字可以聲明程序中會(huì)用到但還未定義的變量。 extern 在分文件編寫的工程中尤為重要。因?yàn)樵趯?shí)際開發(fā)中,我們都會(huì)分文件,分功能編寫。不同的文件會(huì)用到相同的變量,因此, extern 關(guān)鍵字是十分重要的。
    
  2. static 變量
    在C語(yǔ)言中, 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

    文章

    2942

    瀏覽量

    73728
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    608

    瀏覽量

    28286
  • C程序
    +關(guān)注

    關(guān)注

    4

    文章

    254

    瀏覽量

    35945
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TC277如何指定該全局?jǐn)?shù)組變量存儲(chǔ)地址的對(duì)齊方式?

    定義全局?jǐn)?shù)組變量,如何指定該全局?jǐn)?shù)組變量存儲(chǔ)地址的對(duì)齊方式
    發(fā)表于 02-19 07:37

    LabVIEW變量存儲(chǔ)

    LabVIEW中都用什么可以存儲(chǔ)變量,類似于VC++中類函數(shù)的成員變量那種
    發(fā)表于 10-19 20:33

    變量存儲(chǔ)小結(jié)

    變量是C語(yǔ)言最基礎(chǔ)也是最核心的概念,對(duì)于初學(xué)C語(yǔ)言的同學(xué)來(lái)說(shuō)變量存儲(chǔ)總是覺得比較混亂。這里對(duì)C的變量做一個(gè)簡(jiǎn)單的小結(jié),希望對(duì)大家有所幫助。我們看到對(duì)
    發(fā)表于 10-25 15:04

    變量存儲(chǔ)小結(jié)

    變量是C語(yǔ)言最基礎(chǔ)也是最核心的概念,對(duì)于初學(xué)C語(yǔ)言的同學(xué)來(lái)說(shuō)變量存儲(chǔ)總是覺得比較混亂。這里對(duì)C的變量一個(gè)簡(jiǎn)單的小結(jié),希望對(duì)大家有所幫助。我們看到對(duì)
    發(fā)表于 12-02 10:52

    變量存儲(chǔ)小結(jié)

    變量是C語(yǔ)言最基礎(chǔ)也是最核心的概念,對(duì)于初學(xué)C語(yǔ)言的同學(xué)來(lái)說(shuō)變量存儲(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ì)一看,原來(lái)是子函數(shù)的局部變量存儲(chǔ)在這個(gè)0x44xxxxxx地址。查了datasheet,0x40000000
    發(fā)表于 08-07 06:58

    如何通過(guò)BLE發(fā)送一個(gè)變量存儲(chǔ)在一個(gè)智能手機(jī)上?

    你好,我是Gaurav。我想收集關(guān)于PSo4-042的LDR的讀數(shù)?,F(xiàn)在我可以在一個(gè)變量中收集數(shù)據(jù)。但我不知道我怎么把它送來(lái)。1、請(qǐng)告訴我如何通過(guò)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

    C語(yǔ)言中局部變量存儲(chǔ)位置是如何分配的?

    ADS下C語(yǔ)言中局部變量存儲(chǔ)位置是如何分配的?
    發(fā)表于 04-26 06:31

    51單片機(jī)中變量存儲(chǔ)類型有什么區(qū)別

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)中變量存儲(chǔ)類型有什么區(qū)別。
    發(fā)表于 07-03 17:41 ?0次下載
    51單片機(jī)中<b class='flag-5'>變量</b>的<b class='flag-5'>存儲(chǔ)</b>類型有什么區(qū)別

    如何將變量存儲(chǔ)在指定內(nèi)存地址 (基于Keil MDK-ARM)

    如何將變量存儲(chǔ)在指定內(nèi)存地址(基于Keil MDK-ARM)
    的頭像 發(fā)表于 02-29 16:32 ?1.5w次閱讀
    如何將<b class='flag-5'>變量</b><b class='flag-5'>存儲(chǔ)</b>在指定內(nèi)存地址 (基于Keil MDK-ARM)

    STM32堆和棧及變量存儲(chǔ)理解

    STM32堆和棧及變量存儲(chǔ)理解
    發(fā)表于 11-30 16:51 ?19次下載
    STM32堆和棧及<b class='flag-5'>變量</b>的<b class='flag-5'>存儲(chǔ)</b>理解

    【STM32】STM32 變量存儲(chǔ)在片內(nèi)FLASH的指定位置

    在這里以STM32L4R5為例(官方出的DEMO板),將變量存儲(chǔ)在指定的片內(nèi)FLASH地址(0x081F8000)。一、MDK Keil軟件操作uint8_t version[12
    發(fā)表于 12-02 11:06 ?9次下載
    【STM32】STM32 <b class='flag-5'>變量</b><b class='flag-5'>存儲(chǔ)</b>在片內(nèi)FLASH的指定位置

    單片機(jī)變量存儲(chǔ)大小由什么決定?

    最近看到群友在討論【單片機(jī)變量存儲(chǔ)大小由什么決定?】的話題。
    的頭像 發(fā)表于 01-26 10:11 ?562次閱讀
    單片機(jī)<b class='flag-5'>變量</b><b class='flag-5'>存儲(chǔ)</b>大小由什么決定?