30/09/2018, 16:16

[Wiki] Các cách khai báo truct trong c/c++

  • Cách 1. Struct đơn thuần
struct Nut
{
    int GiaTri;
    struct Nut *Tiep;
};

struct Nut *dau, *cuoi;

Với cách khai báo trên, Nut chỉ là một struct đơn thuần (chứ không phải một kiểu), do vậy mỗi khi khai báo biến nào đó có kiểu liên quan đến cấu trúc Nut thì phải có từ khóa struct phía trước (ví dụ: struct Nut *p). Cách này ít khi được sử dụng.

  • Cách 2. Khai báo KIỂU MỚI (typedef)
typedef struct SoNguyen
{
    int GiaTri;
    struct SoNguyen *Tiep;
} Nut;
 
Nut *dau, *cuoi;

Với cách khai báo này, song song với việc khai báo cấu trúc SoNguyen, ta còn định nghĩa thêm một “kiểu” (type) mới có tên là Nut (chính là kiểu có cấu trúc SoNguyen).

Do vậy, sau này mỗi khi khai báo biến nào đó có kiểu liên quan đến cấu trúc SoNguyen thì thay vì khai báo struct SoNguyen *p ta khai báo đơn giả: Nut *p.

Nghĩa là Nut được sử dụng như một kiểu, tương tự như kiểu int hay float. Một chú ý là trường Tiep chưa thể khai báo Nut *Tiep vì lúc này C chưa biết Nut là một kiểu, do vậy phải khai báo là struct SoNguyen *Tiep.

  • Cách 3. TroNut
typedef struct SoNguyen
{
    int GiaTri;
    struct SoNguyen *Tiep;
} Nut;
typedef Nut *TroNut;
TroNut dau, cuoi;

Với cách khai báo này, kiểu TroNut là một kiểu con trỏ trỏ đến một nút trong danh sách. Nghĩa là, thay vì khai báo Nut *dau, *cuoi, ta khai báo TroNut dau, cuoi.

Bài liên quan
0