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

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

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

變量的存儲

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

圖片

** 今天為大家?guī)碜兞看鎯Φ脑敿?xì)教程**

變量

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

    在C語言中,變量在內(nèi)存中的存儲方式主要分為靜態(tài)存儲和動態(tài)存儲。這兩者的區(qū)別在于靜態(tài)存儲有固定的內(nèi)存空間,而動態(tài)存儲的內(nèi)存空間是根據(jù)情況而定的。我們可以通過如下關(guān)鍵字來定義變量的存儲位置。
  1. register 變量
    C語言中,我們可以通過 register 關(guān)鍵字標(biāo)記變量,使用register關(guān)鍵字標(biāo)記的變量會創(chuàng)建在寄存器中。但是在通常情況下,這樣做沒有什么作用,因?yàn)榻^大多數(shù)的硬件的寄存器都不會占用內(nèi)存空間。所以編譯器會默認(rèn)忽視 register 關(guān)鍵字。如果想有效地使用 register 關(guān)鍵字,就要通過一些匯編指令。但是不同硬件之間的寄存器又有所不同,因此 register 關(guān)鍵字的作用不大。
    
  2. auto 變量
    在C語言中,我們可以通過 auto 關(guān)鍵字創(chuàng)建一個自動的局部變量。加上這個關(guān)鍵字的變量在每一次定義的時候都會自動創(chuàng)建出一個新的變量,并且會對這個新的變量重新初始化。例如:
    
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="btmqosq"    class="hljs-keyword">auto修飾的變量每一次定義都會重新創(chuàng)建。
  1. extern 變量
    在C語言中, extern 關(guān)鍵字可以聲明程序中會用到但還未定義的變量。 extern 在分文件編寫的工程中尤為重要。因?yàn)樵趯?shí)際開發(fā)中,我們都會分文件,分功能編寫。不同的文件會用到相同的變量,因此, extern 關(guān)鍵字是十分重要的。
    
  2. static 變量
    在C語言中, static 關(guān)鍵字可以將變量改為靜態(tài)變量。靜態(tài)變量會將數(shù)據(jù)存儲在內(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)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2902

    瀏覽量

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

    關(guān)注

    0

    文章

    607

    瀏覽量

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

    關(guān)注

    4

    文章

    254

    瀏覽量

    35907
收藏 人收藏

    評論

    相關(guān)推薦

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

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

    LabVIEW變量存儲

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

    變量存儲小結(jié)

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

    變量存儲小結(jié)

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

    變量存儲小結(jié)

    變量是C語言最基礎(chǔ)也是最核心的概念,對于初學(xué)C語言的同學(xué)來說變量存儲總是覺得比較混亂。這里對C的變量做一個簡單的小結(jié),希望對大家有所幫助。我們看到對
    發(fā)表于 12-13 15:27

    變量存儲類型

    變量存儲類型有4種,分別是static、external、register、auto,對于每一種存儲類型,他們都有相應(yīng)的使用方式和特點(diǎn),下面就分別對這四種存儲類型介紹一下:1.sta
    發(fā)表于 01-10 15:05

    6657局部變量存儲地址異常 請問是什么原因?

    程序Debug時進(jìn)入子函數(shù),控制臺顯示訪問0x44xxxxxx地址時出錯。仔細(xì)一看,原來是子函數(shù)的局部變量存儲在這個0x44xxxxxx地址。查了datasheet,0x40000000
    發(fā)表于 08-07 06:58

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

    你好,我是Gaurav。我想收集關(guān)于PSo4-042的LDR的讀數(shù)?,F(xiàn)在我可以在一個變量中收集數(shù)據(jù)。但我不知道我怎么把它送來。1、請告訴我如何通過BLE發(fā)送一個變量存儲在一個智能手機(jī)上?謝謝您,Cyrkk.Access 02.Z
    發(fā)表于 10-25 10:02

    如何將變量存儲到PIC24FF64GA002內(nèi)存中

    你好。我想把一些整數(shù)和字符串變量存儲到特定的數(shù)據(jù)EEPROM地址中。我使用MPLAB X 3.40、XC16和PIC24FJ64 GA02。我試著在互聯(lián)網(wǎng)上找到一些工作代碼,但是沒有。如果有人能給出一個例子/源代碼或如何將變量
    發(fā)表于 04-27 13:03

    C語言中局部變量存儲位置是如何分配的?

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

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

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

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

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

    STM32堆和棧及變量存儲理解

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

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

    在這里以STM32L4R5為例(官方出的DEMO板),將變量存儲在指定的片內(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'>存儲</b>在片內(nèi)FLASH的指定位置

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

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