为什么sizeof()这个结构8?

时间:2014-03-06 01:39:29

标签: c struct sizeof

struct t{  
    char days[20];  
    int date;  
    char x;  
    struct t *next;  
}*head  

printf("%ld\n", sizeof(head));

其中sizeof(*void)=8sizeof(int)=4sizeof(char)=1

为什么打印8?

2 个答案:

答案 0 :(得分:5)

head是指向结构t的指针,因为我假设您正在运行x64程序,所以它是8个字节。如果您想要基础类型的大小,请执行以下操作:

sizeof(*head)

答案 1 :(得分:1)

请注意head是结构的指针,而不是结构的实际实例。这意味着sizeof(head)是指针的大小,在系统上恰好为8(注意sizeof(void*)也是8)。

希望这有帮助!