sizeof(指针)依赖于对象类型吗?

Does sizeof(pointer) depend on the object type?

本文关键字:类型 对象 依赖于 指针 sizeof      更新时间:2023-10-16

我试图理解一个对象的指针是什么意思。我想知道如果A是不完整类型,为什么指向A的指针是完整类型。考虑下面的程序:

#include <stdio.h>
class B; //B is incomplete type here
int main()
{
    printf("%dn",sizeof(B*));//4
}

请解释为什么sizeof(B*)返回4?指向对象的指针在内存中究竟表示什么?

请解释为什么sizeof(B*)返回4?

它返回4,因为在你的系统中指针变量的大小是4。

指向对象的指针在内存中究竟代表什么?

对象驻留在内存中,指向对象的指针包含该对象的起始内存地址。例如,如果您的B对象的大小为100字节,并且它被放置在1024-1123(100字节)内存位置,那么指向该对象的指针将保持值' 024(起始地址)。

指向sizeof的指针取决于对象类型吗?

我猜你的意思是指针大小取决于对象类型吗?。不,因为指针包含一个地址,它的大小取决于你的系统的地址空间,而不是它所指向的对象的类型。

指向对象的指针表示该对象在内存中的地址。如果在您的情况下它是4字节,这意味着您有一个32位的地址空间(操作系统或您的程序是在32位构建的)。要维护一个对象的地址,你实际上不需要对该对象有任何了解,因此使用一个指向不完整类型的指针就可以了。

请注意,这些都不适用于指向成员的指针,这是完全不同的东西。