C语言中变量在内存中是如何存放的
首先我們知道計算機有32位/64位,那這里的32位/64位代表什么意思呢?
其實這里的32位/63位代表地址線,如果你的電腦是32位的,就是地址總線寬度為32位,一次可以發送的一個數據是32位的,則尋址的單元最大就是32位數據的最大值,就是2的32次方。地址總線寬度決定了CPU可以訪問的物理地址空間,簡單地說就是CPU到底能夠使用多大容量的內存。
為了能夠有效的訪問到內存中的每個單元,給內存單元進行編號,這個編號就是內存單元地址,通過地址可以進行訪問該內存。
那你知道每一個內存單元的大小是多少嗎?
答案是1個字節,這里是一個字節的原因其實是通過計算算出來的最合適的大小,這樣可以更加有效的利用內存。
首先8 bits(比特)= 1byte(字節) ? 1KB=1024Bytes 1MB=1024KB 1GB=1024MB
原因解釋:
①假設一個內存單元的大小是一個bit,那么32位內存能存儲的最大的數據量是2^32個bit, 轉化為十進制是4294967296bit
4294967296Bit = 536870912Byte = 524288KB = 512MB = 0.5GB
這樣算下來總的能存儲的內存大小才是0.5GB,這也太小了吧,明顯不合適。
如果定義一個char ch = 'w';一個字符在內存中占一個字節,一個內存單元就是一個bit,存儲一個字符就要使用8個內存單元,存儲一個整型變量就要使用32個內存單元,不易于操作修改內存。
②假設一個內存單元的大小是一個byte,那么32位內存能存儲的最大的數據量是2^32個byte, 轉化為十進制是4294967296byte
4294967296byte = 4194304KB = 4096MB = 4GB
剛好定義一個字符占據一個內存單元。這樣算下來感覺才比較正常。
③同理,假設一個內存單元的大小是kb,那么
4294967296KB = 4194304MB = 4096GB = 4TB ,這樣就有一些離譜了吧。
加入你要定義一個字符,它只占據一個字節的大小,但是它要放在一個內存單元中就占據了一個kb的大小,浪費了內存資源
綜上的考量下來,你是否明白了內存中一個內存單元為什么是一個字節的大小了呢?不過這也只是我學習到的和思考出來的結果,如果你有不同的見解,我們可以繼續探討一下。
總結
以上是生活随笔為你收集整理的C语言中变量在内存中是如何存放的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏改编电影《龙与地下城》今日影院上映
- 下一篇: 使用C语言写一个扫雷小游戏