RAM是內存,變數a就存在這裡面。Flash 在單片機是做程序儲存器,用於存放你的程序。eeprom也是用來存變數的,但是eeprom在斷電後數據還在,RAM斷電後數據就沒了
⑵ 在c語言中,變數名 地址 存儲單元的內容 分別怎樣儲存
首先,在C語言中,存儲器實際上是一個大的位元組數組,位元組數組中的每一個元素稱為存儲單元,基本的存儲單元為位元組。
其次,在C語言中,每一個存儲單元佔一個位元組,每一個位元組對應一個地址,這個地址即為內存地址。
再次,在C語言中,變數名是一個標識符,在C語言中標識符只能有數字、字母、下劃線(_)組成,且第一個符號必須是字母或者下劃線(_)。
最後,對於C語言中的變數來說,它具備兩個基本的屬性,一個是地址,一個是內容。正是因為此,所以在函數參數傳遞時有兩種方法一種是傳址,一種是傳值 。比如下面的代碼:
inta=2;//a是變數名,它有兩個屬性,一個是地址,一個是值。
int*p=&a;//使用取地址運算符&即可獲取變數的地址
intb=a;//使用變數名可以取得變數的值
intc=*p;//使用間接引用運算符*也可以取得變數a的值。
⑶ C語言是怎麼經過轉換將變數的值存儲在內存中的
C語言編譯器負責將源代碼中的十進制的10翻譯成4位元組數據:0A(16進制)(實際存儲為二進制,但描述起來太長不方便一般用16進制顯示和描述),而一個位元組的10實際上的二進制就是你說的00001010。
實際上在處理存儲之前需要先分配一個內存給變數 i,並在編譯環境中注冊登記這個變數名-地址關系(變數表),方便後續代碼訪問此變數時匹配到該地址,比如遇到 i=i+2時,編譯器就會生成一個指令對該地址的值進行+2操作。此外還需要生成一個MOV指令代碼指揮CPU執行:數據保存到該地址。
如果你對編譯後的細節感興趣,可以在調試時按CTRL+ALT+D(VS的快捷鍵,也可以通過菜單導航到「調試-窗口-反匯編」,其他編譯器在調試菜單中找)切換到反匯編窗口查看編譯結果,系統會逐條顯示每一條語句對應的匯編指令。
當你對匯編指令感到好奇之後,可以看看匯編、編譯原理、8086 CPU原理、以及數字電路的解碼器 等書籍,不需要完全看懂,了解下會對你學習任何編程語言有幫助,不僅僅局限於C語言。
⑷ C語言中變數的存儲類型有哪幾種,存儲方式哪幾種謝嘍
C語言中的變數有四種存儲類型,這四種存儲類型的關鍵慶鋒字分別是auto(自動),extern(外部),static(靜態)和register(寄棗差殲存凳沖器)。
⑸ c語言變數如何存儲在內存中
在系統為一個程序分配的空間中,分成許多段,比如有代碼段,存放程序可執行代碼,有數據段,可以分配變數,有常量段,專門存放常量,是只讀的。常量變數可以位於數據段中,仍然是變數,只是程序沒有改動許可權。在程序執行到main之前,系統負責將常量區存儲的常量賦值給常量。
⑹ C語言的基本類型在內存中怎麼儲存的
C語言的基本類型在內存中以二進制的形式儲存的。
1、整型數據:所有整數(正負零)在內存中都是以補碼的形式存在。對於一個正整數來說,它的補碼就是它的原碼本身。對於一個負整數來說,它的補碼為原碼取反再加1。
2、字元型數據:把字元的相對應的ASCII碼放到存儲碼單元中,而這些ASCII代碼值在計算機中同樣以二進制補碼的形式存放的。
3、實型數據:也叫浮點數,在計算機中也是以二進制的方式存儲,關鍵在於如何將十進制的小數轉化為二進制來表示。
擴展資料:
根據計算機的內部字長和編譯器的版本,C語言的基本類型表示的數的長度范圍是有限定的。十進制無符號整常數的范圍為0~65535,有符號數為-32768~+32767。八進制無符號數的表示範圍為0~0177777。十六進制無符號數的表示範圍為0X0~0XFFFF或0x0~0xFFFF。
如果使用的數超過了上述范圍,就必須用長整型數來表示。長整型數是用後綴「L」或「l」來表示的。長整數158L和基本整常數158在數值上並無區別。