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

2 Likes

Bạn hiểu như thế nào vậy :slight_smile:

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

1 Like

theo x86 thì e đoán là 8 byte đúng k bác?

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?