c語言常量存儲在哪里 c語言常量變量在內存中的存儲方式?
c語言常量變量在內存中的存儲方式?在系統(tǒng)為一個程序分配的空間中,它被分成許多段。例如,有用于存儲程序可執(zhí)行代碼的代碼段、用于分配變量的數(shù)據(jù)段、用于存儲常量的常量段,這些都是只讀的。常量變量可以位于數(shù)據(jù)
c語言常量變量在內存中的存儲方式?
在系統(tǒng)為一個程序分配的空間中,它被分成許多段。例如,有用于存儲程序可執(zhí)行代碼的代碼段、用于分配變量的數(shù)據(jù)段、用于存儲常量的常量段,這些都是只讀的。常量變量可以位于數(shù)據(jù)段中,仍然是變量,但程序無權更改它們。在程序執(zhí)行到main之前,系統(tǒng)負責將存儲在常量區(qū)域中的常量分配給常量。
靜態(tài)存儲區(qū)和常量存儲區(qū)有什么區(qū)別?
1、靜態(tài)存儲區(qū)和恒定存儲區(qū)的區(qū)別:1。靜態(tài)存儲區(qū)、全局變量和靜態(tài)變量分配給同一個內存塊;常量存儲區(qū)是一個特殊的存儲區(qū),存儲常量,不允許修改。
2. 靜態(tài)存儲是在主功能運行前進行內存分配和初始化;常量存儲是固化在執(zhí)行文件中的數(shù)據(jù)。疊加方向與平臺有關。一般來說,windows正在從高地址向低地址發(fā)展,而Linux則相反。然而,從Linux演變而來的操作系統(tǒng)并不排除特殊情況。
3. 恒定存儲區(qū)中的數(shù)據(jù)放在代碼段中,不占用內存。靜態(tài)存儲區(qū)在內存空間中,在它所屬的類(或文件)中是全局的
2。靜態(tài)存儲區(qū)和恒定存儲區(qū)介紹
1。靜態(tài)存儲區(qū):所有靜態(tài)對象和全局對象都分配在靜態(tài)存儲區(qū),全局變量和靜態(tài)變量分配在C語言的同一塊內存中,全局變量分為初始化和未初始化(初始化的全局變量和靜態(tài)變量在一個區(qū)域中,未初始化的全局變量和靜態(tài)變量在另一個相鄰區(qū)域,未初始化的對象存儲區(qū)域可以由void*訪問和操作,程序完成后由系統(tǒng)釋放)沒有這種區(qū)別。它們共享相同的內存區(qū)域。
2. 常量存儲區(qū):這是一個特殊的存儲區(qū),用于存儲常量,不能修改
3。注意:常量字符串存儲在靜態(tài)存儲區(qū),并返回常量字符串的第一個地址。
常量字符串為什么位于靜態(tài)存儲區(qū)?
為什么常量字符串在靜態(tài)存儲區(qū)
它們是在編譯時確定的,所以在文本常量區(qū)
這同樣非常方便。相同的字符串常量具有相同的地址。當比較它是否是同一個字符串時,只需比較地址。我寫的一個象棋程序使用了這個特性