例如: Sizeof (char*)返回4。还有int* long long*,我试过的所有方法。有什么例外吗?


当前回答

指针只是一个地址的容器。在32位计算机上,您的地址范围是32位,因此指针总是4字节。在64位机器上,如果你的地址范围是64位,一个指针将是8字节。

其他回答

不,指针的大小可能因架构而异。有很多例外。

你得到的保证是sizeof(char) == 1。没有其他保证,包括没有保证sizeof(int *) == sizeof(double *)。

在实践中,指针的大小在16位系统上为2(如果您能找到一个),在32位系统上为4,在64位系统上为8,但是依赖于给定的大小并不能获得任何东西。

一般来说,当你在不同的平台上编译时,sizeof(几乎任何东西)都会改变。在32位平台上,指针的大小总是相同的。在其他平台上(64位是最明显的例子),这种情况可能会发生变化。

在windows 32位机器上的Turbo C编译器中,指针和int的大小为2字节。

所以指针的大小是编译器特定的。但一般大多数编译器实现为支持32位4字节指针变量和64位8字节指针变量)。

所以指针的大小在所有机器上都是不一样的。

指针只是一个地址的容器。在32位计算机上,您的地址范围是32位,因此指针总是4字节。在64位机器上,如果你的地址范围是64位,一个指针将是8字节。