Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Struct (Cấu trúc) trong C

Struct là kiểu dữ liệu do người dùng định nghĩa, gom nhiều kiểu dữ liệu khác nhau thành một kiểu duy nhất. Có nhiều thành viên (members) và biến struct. Truy cập thành viên bằng toán tử chấm ..

Cú pháp

struct struct_name {
    member_definitions;
} struct_variables;

Ví dụ

#include <stdio.h>
#include <string.h>

struct Data {
    int i;
    long int f;
} data, data1;

int main() {
    data.i = 28;
    printf("Gia tri i: %d\n", data.i);
    printf("Kich thuoc data: %zu, data1: %zu\n", sizeof(data), sizeof(data1));
    return 0;
}

Kết quả

Gia tri i: 28
Kich thuoc data: 16, data1: 16

Giải thích: Struct Data có int (4B) + long int (8B trên 64-bit) = 12B, nhưng do alignment/padding nên kích thước = 16B. Thành viên truy cập qua data.i.

Đặc điểm quan trọng

  • Padding/Alignment: Compiler chèn byte đệm để căn chỉnh địa chỉ (ví dụ: int 4B, double 8B -> double phải ở địa chỉ chia hết 8).
  • Kích thước: sizeof(struct) ≥ tổng kích thước thành viên.
  • Khởi tạo: struct Data d = {10, 20L}; hoặc designated initializer {.i=10, .f=20L} (C99).
  • Con trỏ struct: Dùng mũi tên ptr->member.
Mẹo: Sắp xếp thành viên từ lớn đến nhỏ (hoặc theo alignment) để giảm padding tiết kiệm bộ nhớ.