C和內存

1.當聲明一個變量時,編譯器就爲這個變量申請了若干大小(視該變量類型而定,如32位系統中申請了整形變量,則內存大小爲4個字節)
的內存用來存儲該變量的內容,同時將該變量的名稱和該變量在內存中的地址關聯起來,這樣程序在訪問變量時,相當於訪問該內存地
址,如對變量a進行賦值操作時,只需“a=0”即完成對a的初始化,實質程序已經在變量a的內存地址上,對該變量的內容進行寫操作。
程序之所以能找到a存儲內容的地址,就是因爲編譯器在我們聲明變量時,爲我們將變量名a和該變量的內存地址關聯了起來,從而我們
可以很方便的訪問該變量了。

2.對內存的理解。內存其實就像一個酒店,假設該酒店每個房間有8張牀,申請一個變量時,則相當於旅遊組團(該團的人數的多少就相
當於數據類型)入住了酒店,比如申請了一個int類型的變量,則相當於該團需要在該酒店中申請4個房間,每個房間可睡8個人,共32人。
而每個房間都是有房間號的,這個房間號就好比內存地址(如0x30000000),我們通過該房間號就可以找到房間裏的人。房間裏的人本來
是8個人的,由於入住酒店之後,有些人想出去逛街,有些人累了想要在房間休息,於是就出現房間裏有的牀是空的,有些牀是有人的。
這可以類比到變量的內容,一個int變量有4個字節(byte),一個字節有8個位(bit),bit就好比房間裏的牀,有人則爲1,無人則爲0。
當然這只是個不恰當的類比,只能用來幫助對內存的理解。實際上,從硬件角度看,內存其實是由許多的門電路組成,每個門電路可封裝
爲一個bit,該bit的內容只有0或1(取決於上層的賦值操作),而每8個bit可組成一個字節,在32位系統中,每4個字節則可以用來存放一
個int數據了。每個字節在內存中都有地址,就像門牌號,而具體該地址裏面的門電路內容是什麼(0或1),則由上層程序賦值決定。

3.在程序中,幾乎可認爲都是圍繞內存來進行的,可以說內存就是程序的核心。如果在程序中對內存處理不當,則會導致程序崩潰。
事實上,所謂的數據結構就是爲了更好管理數據,在內存中,這些數據相互聯繫,只要知道了其中一個數據的內存地址,則可以通過
各種方式(數組,結構體,隊列。。。)去訪問其他的數據。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章