[英]How the sizeof() function works for Structures in C?
結構定義如下
typedef struct Sample
{
int test;
char strtest;
} Sample;
在Main Function中,我將Sizeof稱為結構。
sizeof(struct Sample)
我聽說sizeof在結構上的返回值可能不正確。 如果是這種情況,我該怎么做才能獲得正確的價值?
它確實返回了一個可靠的值 - 並不總是你期望的價值。
在Sample結構中,假設一個1字節的char和4字節的int,但是你沒有得到“5”的結果。
因為結構是填充的,所以元素從它們的自然邊界開始。 你更有可能得到“8”的結果。
Wiki很好地解釋了這一點: http : //en.wikipedia.org/wiki/Sizeof - 位於底部附近的“Structure Padding”。
Sizeof不是函數; 它是一個運營商 。 它的結果始終是正確的,但有時是意外的,因為填充,或者認為它是一個神奇的數組大小確定器。
作為運算符,如果在變量中操作,則不需要括號。
int foo;
printf("%zu\n", sizeof foo);
是完全合法的。
具有結構類型的sizeof
與任何其他類型一樣工作:運算符的結果是以字節為單位的類型的大小。 結構類型的大小與此結構類型的對象的大小相同。
所述sizeof
的結構對象可以比因為填充的結構類型的不同元件的尺寸更大。
在每個結構成員之后可以填充未指定數量的字節,並且在結構類型(或結構類型的對象)的大小中考慮填充
要打印結構類型的大小,請使用printf
格式字符串中的z
轉換說明符:
printf("%zu\n", sizeof (struct my_structure_type));
在這里,您可以閱讀更多內容: http : //somectips.wordpress.com/2012/01/05/what-is-the-size-of-struct/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.