Cú pháp khai báo Structure trong C và C++ có một chút khác biệt.
Cú pháp trong C++:
1 2 3 4 5 6 |
struct [struct_name] { type attribute; // ... [struct_name *struct_attribute;] } [instance1, [instance2, ...]]; |
- Bắt đầu khai báo bằng từ khóa “struct”
- Tên của structure (struct_name) là optional (tức là không bắt buộc)
- Thân của structure bao gồm một hoặc nhiều thuộc tính
- Thuộc tính của structure có thể là con trỏ kiểu struct_name (còn gọi là self-referential pointer)
- Thuộc tính của structure không thể là một struct có kiểu là struct_name
- Để khai báo một biến của structure thì sử dụng struct_name giống như các kiểu dữ liệu khác
1 |
struct_name struct_instance [, instance2, ...]; |
- Có thể kết hợp khai báo structure với khai báo biến của structure đó. Khi đó, toàn bộ khai báo structure được coi là một kiểu dữ liệu, và tên của một hay nhiều biến của structure đó sẽ được viết đằng sau khai báo structure. Trong trường hợp này hoàn toàn có thể bỏ qua struct_name (tuy nhiên điều này là không nên)
Cú pháp trong C:
1 2 3 4 5 6 7 |
[typedef] struct [struct_name] { type attribute; type attribute2; // ... [struct struct_name *struct_instance;] } [struct_name_t] [struct_instance]; |
Ở đây sẽ có 2 lựa chọn:
- Bỏ qua typedef and struct_name_t.
Trong trường hợp này, để khai báo một biến của structure thì cần có từ khóa “struct” ở đằng trước →
1 |
struct struct_name struct_instance; |
- Hoặc có thể dùng typedef để khai báo kiểu struct_name_t. Khi đó có thể khai báo biển của structure như sau →
1 |
struct_name_t struct_instance; |
Trong cả 2 trường hợp trên, nếu muốn khai báo thuộc tính của structure là con trỏ trỏ đến structure đó thì bắt buộc phải khai báo như sau →
1 |
struct struct_name *struct_instance; |
— Phạm Minh Tuấn (Shun) —
Thao khảo: www.cprogramming.com