有个同学告诉我,现在学生的面试题很基础,他就碰到过一次,“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++,不用管了?
希望能得到点答案,各位发表点看法?