c常量存儲區
1. C程序的內存分為5個區域:(棧區), (堆區), (數據區), 代碼區,文字常量區。
不是的,上述五個區域指的是C程序運行時所可能涉及的區域。
2. c語言常量問題
常量它也是有地址的,只是和變數存貯的地方不同,但是存儲的形式是一樣的,就神猜是在內存的地方不同,內存中有專門放常量的,通過存儲方法的角度是區分不了變數和常量的,只能通過其存儲的值是否變薯瞎橡化來區分(以人的角度),和存數旁放的地點不同區分(機器的角度)
比如在單片機中,就分為程序區和數據區,它的常量就放在程序區中
3. c語言中,常量是存放在內存中嗎
關鍵的是,常量和變數是放在不同的"段"(section)里,程序一旦載入,常量/變數自然都在內存里了。
常量和全程變數,通常放在初始化段;局部變數,通常在棧里;
還有一種情況,比如匯編里的立即數(mov
ax,
12),它是直接放在指令里的,也即是代碼段里.
4. c語言常量變數在內存中的存儲方式
從靜態存儲區域分配:內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變數,static變數。
在棧上創建(地址從大到小):在執行函數時,函數內局部變數的存儲單元都可以在棧上創建,函數執行結束時這些存儲單元自動被釋放。棧內存分配運算內置於處理器的指令集中,效率很高,但是分配的內存容量有限。(棧上的變數都具有臨時變數的特性)
從堆上分配(地址從小到大):亦稱動態內存分配。程序在運行的時候用malloc或new申請任意多少的內存,程序員自行負責在何時用free或delete釋放內存。
(4)c常量存儲區擴展閱讀:
注意事項:
const在C語言中使用比較多,雖然變數由const修飾,但是從本質上仍然是變數,所以存儲在堆棧和靜態存儲區,這么區域從進程角度來講是可讀可寫,但為什麼const修飾後將變得不可寫了。
既然const變數所在區域的屬性為可讀可寫,那麼可以修改其所處內存的值了。
C語言const變數的作用說起:const是一個c語言的關鍵字,限定一個變數不允許被改變,產生靜態作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外在觀看別人代碼的時候,清晰理解const所起的作用,對理解對方的程序也有一些幫助。
5. C語言中系統既然不給常量分配存儲空間,那麼編譯系統又是如何"記憶"和使用常量的呢
耐心看完,你應該能明白了:
C語言中,常量和變數是放在不同的"段"(section)里,程序一旦載入,常量/變數自然都在內存里了。
常量和全程變數,放在初始化段。
局部變數,通常在棧里。
常量在程序載入時同時載入。