有個同學告訴我,現在學生的面試題很基礎,他就碰到過一次,“1個指針占幾個字節”?答案是4個字節。
當時我沒有太在意,CPU的尋址能力與CPU的字長是相等的,32位的處理器尋址4G的空間,指針當然要用4個字節(4×8=32)來表示。
但前兩天無意中翻了一下微機原理,看到關于intel8088的原理分析,讓我產生了很大的困惑,8088的有地址20條地址線,但卻是準16位的處理器。按一貫以來的想法,8位的CPU尋址256個地址單元,16位的CPU尋址64K個地址單元,這顯然與20條地址引線(可直接尋址1M個地址單元)的尋址范圍有很大的出入。
看來“CPU的尋址能力與CPU的字長相等”在8088中是行不通的。但我關心的是,在C++的編譯系統中,為了尋址1M個地址單元,指針要用幾個字節?總不能說2個半吧,要不那時候還沒C++,不用管了?
希望能得到點答案,各位發表點看法?