32位/64位处理器:*char与*int的区别?不同类型的指针+1的区别?
???此文章為網上相關內容的小總結
???首先是字(word)的定義:由若干個字節構成,字的位數叫做字長,不同檔次的機器有不同的字長,它是計算機進行數據處理和運算的單位,也就是 CPU 一次能處理的二進制代碼的長度,即CPU一次所能處理的二進制代碼的位數,也就是CPU的地址線的個數,即CPU的位寬。我們平時說的32位處理器,64位處理器中的 32、64 就是對應處理器的字長。
???各類型的數據長度是由編譯器決定的: 發現數據類型占內存的位數實際上與操作系統的位數和編譯器(不同編譯器支持的位數可能有所不同)都有關,具體某種數據類型占字節數得編譯器根據操作系統位數兩者之間進行協調好后分配內存大小。具體在使用的時候如想知道具體占內存的位數通過sizeof(int)可以得到準確的答案。
???在這里以int與char典型的變量類型舉例,他們作為指針時,數據長度相同,但受處理器位寬影響,會有所不同
在32位處理器 char為1字節 *char為4字節 int為4字節 *int為4字節
在64位處理器 char為1字節 *char為8字節 int為4字節 *int為8字節
在各種變量類型指針+1的問題上
???首先在定義一個變量并賦值時,編譯器會給此變量自動分配內存地址,棧區進行入棧操作,全局區在相應的地址上進行存儲數據。
那么指針會指向一個地址,指針變量加1,即向后移動1 個位置表示指針變量指向下一個數據元素的首地址。但是這將移動多少位地址,這跟變量的類型有關
???例如64位處理器中
???int類型為4字節 對應的指針+1將移動4字節
???char類型為1字節 對應的指針+1將移動1字節
???以此類推,可以知道不同類型指針+1的區別。
總結
以上是生活随笔為你收集整理的32位/64位处理器:*char与*int的区别?不同类型的指针+1的区别?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SWF播放
- 下一篇: java jdk v1.6_jdk1.6