这取自C,并以此为基础。假设我们有一个 32 位指针
char* charPointer;
它指向内存中包含一些数据的某个位置。它知道这个指针的增量是 1 个字节,等等。另一方面,
int* intPointer;
还指向内存中的某个位置,如果我们增加它,它知道如果我们向它添加 1,它应该增加 4 个字节。
问题是,我们如何能够使用这些指针来寻址完整的 32 位可寻址空间 (2^32) - 4 GB,如果它们显然包含一些允许它们彼此分开的信息,例如char*
或int*
,所以这给我们留下的不是 32 个字节,而是更少。
当我输入这个问题时,我开始思考,也许这都是语法糖,真的是编译器吗?也许原始指针只是 32 位并且它不关心类型?是这样吗?