C語言入門篇--理解地址及內(nèi)存
1.內(nèi)存
- 內(nèi)存是電腦中一個重要的存儲器,計算機中所有的程序都在內(nèi)存中運行的,內(nèi)存的性能對計算機的影響非常大。
- 內(nèi)存是計算機與CPU進行溝通的橋梁,計算機會把程序由硬盤加載到內(nèi)存中后再去使用。
- 為了有效的使用內(nèi)存,把內(nèi)存劃分成一個個小的內(nèi)存單元,每個內(nèi)存單元的大小是1個字節(jié)。
為了能夠有效的訪問即快速找到內(nèi)存的每個單元,就給內(nèi)存單元進行了編號,這些編號被稱為該內(nèi)存單元的地址。
一般運行一個程序主要涉及計算機的三個設備:內(nèi)存、CPU、硬盤。
1.1內(nèi)存和CPU的關(guān)系
CPU是負責數(shù)據(jù)的運算和處理,內(nèi)存是用來交換數(shù)據(jù),如果沒有內(nèi)存則CPU就無法接收到數(shù)據(jù)。
1.2內(nèi)存和硬盤的關(guān)系
eg:C語言中定義變量,都是在程序運行起來后在內(nèi)存中開辟空間。
2.地址
2.1概念
(1)為了有效的使用內(nèi)存,把內(nèi)存劃分成一個個小的內(nèi)存單元,每個內(nèi)存單元的大小是1個字節(jié)。
(2)為了能夠有效的訪問即快速找到內(nèi)存的每個單元,就給內(nèi)存單元進行了編號,這些編號被稱為該內(nèi)存單元的地址。
2.2地址編號
在32位平臺下,內(nèi)存單元的地址是由32位的二進制數(shù)(即8位十六進制數(shù))依次編號。
所以內(nèi)存單元共有2^23個,而每一個內(nèi)存單元保存1個字節(jié)的內(nèi)容。(具體見上圖)
ps:
計算機訪問內(nèi)存的基本單位是字節(jié)。
一般計算機有32位和64位機器。
以32位機器為例,則能安裝的最大內(nèi)存為(2^32)*(1字節(jié))=4GB
ps:4GB計算來源: (2^32)*(1字節(jié))=(2*10)*(2*10)*(2*10)*(2*2)*(1字節(jié))=4GB
常見的存儲單位:
bit(位)、B(字節(jié))、KB(千字節(jié))、MB(兆字節(jié))、GB(千兆字節(jié))。
B 是 Byte 的縮寫。
換算關(guān)系:
1B=8bit
1KB=1024B
1MB=1024KB
1GB=1024MB
2^10=1024
為了有效的使用內(nèi)存,把內(nèi)存劃分成一個個小的內(nèi)存單元,每個內(nèi)存單元的大小是1個字節(jié)。
為了能夠有效的訪問即快速找到內(nèi)存的每個單元,就給內(nèi)存單元進行了編號,這些編號被稱為該內(nèi)存單元的地址。
32位計算機是指能同時處理32位二進制數(shù),內(nèi)存單元的地址是由32位的二進制(即8位十六進制)數(shù)依次編號,所以內(nèi)存單元共有2^23個,而每一個內(nèi)存單元是1個字節(jié)。
所以有:
(2^32)*(1字節(jié))=(2*10)*(2*10)*(2*10)*(2*2)*(1字節(jié))=1024*1024*1024*4*(1字節(jié))=4GB
2.3關(guān)于編址
(1)計算機為什么對每個字節(jié)進行編址?
提高查找效率。計算機內(nèi)存中編址從最低的地址,依次向上進行編址,有了地址就可以對計算機中每個字節(jié)進行快速尋址,方便計算機進行快速查找。
(2)所有的編制都是連續(xù)編址的。
(3)編址是由硬件電路自動完成的。
2.4使用
(1)C語言中定義變量都是在內(nèi)存中定義的,定義變量的本質(zhì)是開辟空間。
(2)每個變量都有地址,取一個變量的地址稱作取地址。
(3)指針就是地址。
eg:
char a='A'; int b=10;
以上就是C語言入門篇--理解地址及內(nèi)存的詳細內(nèi)容,更多關(guān)于C語言的資文章料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解QListWidget如何實現(xiàn)自定義Item效果
這篇文章主要為大家介紹了如何通過QListWidget實現(xiàn)自定義Item效果,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下2022-04-04C語言scandir函數(shù)獲取文件夾內(nèi)容的實現(xiàn)
scandir?函數(shù)用于列舉指定目錄下的文件列表,本文主要介紹了C語言scandir函數(shù)獲取文件夾內(nèi)容的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-03-03C++實現(xiàn)LeetCode(63.不同的路徑之二)
這篇文章主要介紹了C++實現(xiàn)LeetCode(63.不同的路徑之二),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07