C語言的記憶體與地址及相關一些基本概念
- 32位作業系統為什么有4G記憶體?
- 記憶體是什么
- 堆是什么
- 地址的本質
- 記憶體與地址的關系
- 記憶體的分布(從小到大)
- 換算關系與單位
- c語言是一種弱型別語言
- 變數的本質
- 指標的本質
- 陣列宣告的記憶體排序
32位作業系統為什么有4G記憶體?
- 32位作業系統安裝在32位電腦中,32位電腦的CPU是32位,即地址總線是32根,CPU處理程式,發出指令給到地址總線(地址總線的作用是傳遞地址到尋址空間——尋找地址)因為地址總線有32根,所以可以傳遞出2的32次方中結果,尋址空間會根據這個結果在記憶體中尋找對應的編號(在開機的時候作業系統就會為記憶體中的每一個位元組進行編號,這個標號即為地址),一個編號對應的是一個位元組所以可以尋找到2的32此方個位元組(即4G),所以該電腦只能尋找到4G記憶體,所以32位系統只“需要”管理4G記憶體,所以32位作業系統在開機的時候只會給4G記憶體編號,即通俗表達“32位作業系統只能管理4G記憶體”
記憶體是什么
- 計算機"臨時"儲存"資料"(變數)的地方—程式執行的時候變數存盤在記憶體中,程式執行完畢,記憶體釋放
- 硬碟:計算機"永久"儲存"資料"(檔案)的地方
- 記憶體是由作業系統管理的
堆是什么
- 自由分配的空間,自由申請的空間是堆空間
地址的本質
- 如果是32位的電腦,那么地址是32位的二進制數
記憶體與地址的關系
- 一個位元組的記憶體會被分配一個地址
記憶體的分布(從小到大)
- 代碼段:存盤代碼塊(函式的宣告)
- 資料段:常量,全域變數,靜態變數
- 堆:自由分配的空間
- 堆疊:存盤區域變數的地方
– 一個函式與一個函式分配在不同的堆疊中
– 一個函式再將要執行的時候,系統會判斷出該函式將會占用多少空間,然后分配出來這么多空間作為一個堆疊
– 堆疊的地址是從大地址到小地址分配的,
– 一個堆疊中的資料的分配是從小地址到大地址分配的
– 堆疊-----先進后出 后進先出 - 系統記憶體:系統運行占用的空間
換算關系與單位
- 記憶體的最小存盤單位是"位元組"
- 1位元組 = 8個二進制位
- 1K = 1024位元組;1M = 1024K;1G = 1024M
- 1個16進制位 = 4個2進制位
c語言是一種弱型別語言
- 如何判別:資料存盤到記憶體當中就可以看出他的資料型別,是強型別,例:有資料型別限制的大部分是靜態宣告,否則是
反之,看不出是弱型別,例:ASCLL A 和65 都是65,分辨不出是否一樣,JS是強型別語言,
變數的本質
- 變數名只是一個代號,地址,
- 變數的本質就是記憶體 ,
- 資料寫到cpu哪個位置
- 一個位元組8個二進制數1
- 一個位元組8位,32位就是48=32,64位就是88=64,
- 指標就是一種資料型別,專門為地址產生的,
- 除了代碼編譯后存在代碼段以外 ,當前呼叫那個函式,當前呼叫的函式運行到多少行,并且這個函式中有哪些變數,這些變數的值是什么, 這個記錄的地方在哪呢?存在堆疊,
指標的本質
- C語言中所有的變數都有型別
- int型別就保存整數
- doublue型別就保存的雙精度的浮點數
- 指標保存的是記憶體地址
陣列宣告的記憶體排序
- C語言宣告陣列要宣告陣列的長度
- 在函式里宣告在堆疊記憶體里,函式執行的時候結果也在堆疊記憶體里
- 如果我們在使用指標的時候,如果我們在程式里面,使用到了一個我們沒有宣告過的變數所指向的記憶體空間的話,那我們會得到隨機的值,C語言不做指標的安全檢查,只要給了一個地址,就操作一個地址,把值取出來
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/196734.html
標籤:其他
上一篇:華為18級大牛匠心獨運,只用一份圖解網路筆記掌握TCP/IP
下一篇:一文解讀計算機專業校園招聘
