我试图理解指向对象的指针是什么意思。我想知道A
是不完整的类型,为什么指向A
的完整类型。请考虑以下程序:
#include <stdio.h>
class B; //B is incomplete type here
int main()
{
printf("%d\n",sizeof(B*));//4
}
请解释为什么sizeof(B*)
返回4?指向对象的指针究竟在内存中表示什么?
答案 0 :(得分:3)
指向对象的指针表示内存中对象的地址。如果在您的情况下它是4个字节,则意味着您有32位地址空间(操作系统或您的程序以32位构建)。要保持对象的地址,你真的不需要任何对象的知识,所以指向不完整类型的指针就可以了。
请注意,这些都不适用于指向成员的指针,而这些成员是完全不同的野兽。
答案 1 :(得分:2)
请解释为什么sizeof(B *)返回4?
它返回4,因为系统中指针变量的大小为4。
对象的指针究竟在内存中表示什么?
对象驻留在内存中,指向对象的指针包含该对象的起始内存地址。例如,如果您的B
对象的大小为100字节,并且它位于1024-1123(100字节)的内存位置,则指向该对象的指针将保存值“024(起始地址)。” p>
指向sizeof的指针取决于对象类型吗?
我猜你的意思是指针大小取决于对象类型吗?。不,因为指针包含一个地址,它的大小取决于系统的地址空间,而不是它指向的对象类型。