** 今天為大家帶來變量存儲的詳細教程**
變量
在編寫C程序的過程中,我們常常會使用到變量。而基本的變量類型在前面的教程也已經講到,在我們創建這些變量的時候,變量會被創建在內存。值得注意的是,變量在不同的內存中有著不同的特性,因此,我們可以通過一些關鍵字來規定變量在內存創建的位置。從而達到我們想要的結果。
在C語言中,變量在內存中的存儲方式主要分為靜態存儲和動態存儲。這兩者的區別在于靜態存儲有固定的內存空間,而動態存儲的內存空間是根據情況而定的。我們可以通過如下關鍵字來定義變量的存儲位置。
- register 變量
在C語言中,我們可以通過 register 關鍵字標記變量,使用register關鍵字標記的變量會創建在寄存器中。但是在通常情況下,這樣做沒有什么作用,因為絕大多數的硬件的寄存器都不會占用內存空間。所以編譯器會默認忽視 register 關鍵字。如果想有效地使用 register 關鍵字,就要通過一些匯編指令。但是不同硬件之間的寄存器又有所不同,因此 register 關鍵字的作用不大。
- auto 變量
在C語言中,我們可以通過 auto 關鍵字創建一個自動的局部變量。加上這個關鍵字的變量在每一次定義的時候都會自動創建出一個新的變量,并且會對這個新的變量重新初始化。例如:
void autoAdd() {
auto int autonum = 0;
autonum =autonum + 1;
cout << autonum << endl;
}
int main() {
autoAdd();
autoAdd();
}
從結果可以看到,調用兩次函數后結果是同樣的。因為auto修飾的變量每一次定義都會重新創建。
- extern 變量
在C語言中, extern 關鍵字可以聲明程序中會用到但還未定義的變量。 extern 在分文件編寫的工程中尤為重要。因為在實際開發中,我們都會分文件,分功能編寫。不同的文件會用到相同的變量,因此, extern 關鍵字是十分重要的。
- static 變量
在C語言中, static 關鍵字可以將變量改為靜態變量。靜態變量會將數據存儲在內存的全局區,全局區的數據在使用完成后釋放。因此,靜態變量可以始終保持其原本的值。
今天的內容就到這里,下期小編將帶大家繼續學習,各位看官老爺記得查閱哦~
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
內存
+關注
關注
8文章
3028瀏覽量
74076 -
變量
+關注
關注
0文章
613瀏覽量
28384 -
C程序
+關注
關注
4文章
254瀏覽量
36039
發布評論請先 登錄
相關推薦
變量的存儲類型
變量的存儲類型有4種,分別是static、external、register、auto,對于每一種存儲類型,他們都有相應的使用方式和特點,下面就分別對這四種存儲類型介紹一下:1.sta
發表于 01-10 15:05
6657局部變量存儲地址異常 請問是什么原因?
程序Debug時進入子函數,控制臺顯示訪問0x44xxxxxx地址時出錯。仔細一看,原來是子函數的局部變量存儲在這個0x44xxxxxx地址。查了datasheet,0x40000000
發表于 08-07 06:58
如何通過BLE發送一個變量存儲在一個智能手機上?
你好,我是Gaurav。我想收集關于PSo4-042的LDR的讀數。現在我可以在一個變量中收集數據。但我不知道我怎么把它送來。1、請告訴我如何通過BLE發送一個變量存儲在一個智能手機上?謝謝您,Cyrkk.Access 02.Z
發表于 10-25 10:02
如何將變量存儲到PIC24FF64GA002內存中
你好。我想把一些整數和字符串變量存儲到特定的數據EEPROM地址中。我使用MPLAB X 3.40、XC16和PIC24FJ64 GA02。我試著在互聯網上找到一些工作代碼,但是沒有。如果有人能給出一個例子/源代碼或如何將變量
發表于 04-27 13:03
【STM32】STM32 變量存儲在片內FLASH的指定位置
在這里以STM32L4R5為例(官方出的DEMO板),將變量存儲在指定的片內FLASH地址(0x081F8000)。一、MDK Keil軟件操作uint8_t version[12
發表于 12-02 11:06
?10次下載
評論