Xin chỉ giáo về Struct size
Em chào mọi người ạ .
Hiện em đang học về Struct nhưng có 1 số thắc mắc về phần size of Struct mong các tiền bối có thể cho em lời khuyên ạ.
Em khai báo 1 Struct như sau
Struct SIZE
{ int a;
int b;
char c;
char d;
}
lúc em tính size của nó sẽ ra kết quả là 12 byte. Em hiểu nhưng lúc em thay đổi 1 số biến ở trong đó giả dụ như em khai báo Struct sau thì kết quả lại không đúng theo cách em suy luận ạ.
Struct Test
{
char t[9];
char a;
}
thì theo cách tính nếu giống bài ở trên thì kq đáng lẽ phải là 12 byte chứ ạ nhưng đằng này nó lại trả về kết quả là 10 byte ạ. Các anh chị có thể chỉ cho em nó sai ở đâu được không ạ ? và làm sao để tính ra được 10 chứ không phải 12 ạ ? Em cảm ơn mọi người nhiều ạ .
Ko rõ bạn quan tâm đến size của struct làm gì
Ở 1 thì mỗi biến 4 byte + lại là 12 không nói
Nhưng ở 2. Bạn suy luận kiểu gì mà lại là 12 bytes
Nếu 9 ( biến 1 ) + 4 cho size của char a thì nó phải là 13
Nhưng ở đây char t[9] là kiểu tham chiếu. Tức là nó sẽ lưu địa chỉ của t ( chắc lưu thêm kiểu dữ liệu nữa ) nên size của cái 2 mới là 10
Bạn có thể thử bằng cách khai báo t với tất cả các szie khác chắc cũng cho về 1 kết quả size struct
=> Edit. Ko hiểu ngôn ngữ bạn đang dùng cho struct
Hehe. Lộn 4x4 = 16
…
Chắc 2 char ở đây là 1 byte + 1 byte null
Bạn đọc thêm về padding trong struct để biết cách tính byte của struct
Bạn hiểu như thế nào vậy
Bạn phải nói rõ ngôn ngữ bạn dùng
Nhìn code thì bạn lẫn lộn cả C và C#
char trong C luôn luôn là 1byte
theo x86 thì e đoán là 8 byte đúng k bác?