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