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)存單元的地址。
一般運行一個程序主要涉及計算機的三個設(shè)備:內(nèi)存、CPU、硬盤。
1.1內(nèi)存和CPU的關(guān)系
CPU是負責(zé)數(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)文章
為什么要學(xué)習(xí)C語言 C語言優(yōu)勢分析
不止一個學(xué)生問到我:“老師,為什么我們的應(yīng)用程序設(shè)計要學(xué)C語言而不是別的?C語言不是已經(jīng)過時了嗎?如果現(xiàn)在要寫一個Windows程序,用VB或Dephi開發(fā)多快呀,用C行嗎?退一萬步,為什么選擇C而不是C++呢?”2013-07-07零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方
這篇文章主要介紹了零基礎(chǔ)學(xué)習(xí)C/C++需要注意的地方,文中講解非常細致,供大家參考和學(xué)習(xí),想要學(xué)習(xí)C/C++的可以閱讀此文2020-06-06詳解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