想象一种类型,我将其称为"类型".可能是一个"int",可能是一个奇特的结构.
type *p;
Run Code Online (Sandbox Code Playgroud)
sizeof(p)=指向p的指针的大小(即,存储'p'中的数据所存储的地址所需的字节数.在PC上,它可能是4或8字节,具体取决于你是否有32位或64位架构,但不保证.在其他archetectures它几乎可以是任何东西)
sizeof(*p)= p类型的大小; 用于在"类型"中存储数据的字节数.
重要的提示:
您可能会看到执行此操作的代码:
p = malloc(sizeof(*p)+100)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,将分配足够的内存来存储"类型"和额外的100个字节.但是,执行'sizeof(*p)'将返回'type'所需的内存,而不是额外的100字节.C中无法知道已分配了多少内存; 你必须自己管理.