當前位置:才華齋>計算機>C語言>

C語言記憶體地址基礎

C語言 閱讀(1.48W)

C語言是一門通用計算機程式語言,應用廣泛。下面是小編整理的C語言記憶體地址基礎,希望對大家有幫助!

C語言記憶體地址基礎

從計算機記憶體的角度思考C語言中的一切東東,是挺有幫助的。我們可以把計算機記憶體想象成一個位元組陣列,記憶體中每一個地址表示 1 位元組。比方說我們的電腦有 4K 記憶體,那這個記憶體陣列將會有 4096 個元素。當我們談論一個儲存地址的指標時,就當相於我們在談論一個儲存著該記憶體陣列某個元素索引的指標。逆向引用某個指標,將會得到陣列中該索引所指向的值。這一切當然都是謊言。作業系統對記憶體的管理要遠比這複雜。記憶體不一定連續,也不一定按順序處理。但前面的類比是一種討論C語言記憶體的簡單方式。

假設我們的計算機有 4K 的記憶體,下一個開放地址的索引是2048。我們宣告一個新的字元變數i='a'。當該變數所獲得的記憶體放置了它的值,變數的名字也與記憶體中的該位置關聯,我們的字元i就獲得了一個儲存在2048位置的值。該字元是單位元組的因此它只佔用了索引為 2048 的位置。如果我們對 i 變數使用地址操作符(&),它將返回到索引為2048的位置。如果這個變數是另一種型別,比如是 int,它將佔用4位元組,在陣列中佔用索引為 2048-2051 的位置。使用地址操作符仍將返回索引2048的位置,因為 int 型即便佔用了 4 位元組,但它開始於 2048 位置。我們看一個例子:

// intialize a char variable, print its address and the next address

char charvar = '