2014-03-06 140 views
2
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爲什麼sizeof()這個結構體8?

爲什麼它打印8?

+12

因爲它的指針? – FDinoff

+0

因爲你忘記了星號。 'sizeof(* head)'會給你你正在尋找的東西。投票結束(錯字)。 – dasblinkenlight

回答

1

請注意,head指針而不是結構的實際實例。這意味着sizeof(head)是指針的大小,在您的系統上恰好爲8(注意sizeof(void*)也是8)。

希望這會有所幫助!

+0

所以它實際上並沒有在結構中加入元素的大小。好的,謝謝 – user2821523

+0

@ user2821523完全正確 - 只是詢問指針佔用了多少空間。 – templatetypedef

5

head是一個指向struct t的指針,它是8字節,因爲我假設你正在運行一個x64程序。如果你想要的底層類型的大小,這樣做:

sizeof(*head)