你想要C标准的答案,或者答案几乎一直都有效吗?
通常,所有指向数据的指针都是相同的大小,即sizeof(void*).
但是,由于您标记了"C"和"标准",请注意C标准不要求这样做.我认为这是POSIX所要求的,并且在Win32上也是如此,并且没有一个常见的现代架构具有涉及不同大小指针的指令.你有不同大小的指针的一个场景是带有"near"和"far"指针的分段内存架构,当然在任何给定的实现中,其中只有一个可以是C中的"普通"指针.另一种情况是,理论上指针int可以比指针小2位char,如果int总是4对齐的话.如果内存空间是64MB,则可能意味着int*适合2个字节,而a char*或void*需要3个.sizeof(int*) < sizeof(char*).
因此,为了清晰和保证正确性,如果p是指针则其大小为sizeof p.
正如Steve Townsend在他的评论中所说,如果你问另一个关于你的代码的问题,你可能会解决你的真正问题.知道指针的大小并没有直接告诉你关于包含指针的结构的布局.