Có 2 cách để định nghĩa cấu trúc lồng nhau trong C:
- Theo cấu trúc riêng biệt.
- Theo cấu trúc nhúng.
1. Cấu trúc riêng biệt
Ví dụ, chúng ta tạo ra 2 cấu trúc và cấu trúc phụ thuộc được sử dụng bên trong cấu trúc chính như một thành viên.
struct
Date {
int
day;
int
month;
int
year;
};
struct
Employee {
int
id;
char
name[20];
struct
Date birthday;
} emp1;
2. Cấu trúc nhúng.
Cấu trúc nhúng là viêc định nghĩa cấu trúc bên trong một cấu trúc khác và nó cũng là một trường hợp của cấu trúc (structure) lồng nhau trong C.
Ví dụ:
struct
Employee {
int
id;
char
name[20];
struct
Date {
int
day;
int
month;
int
year;
} birthday;
} emp0;
TRUY CẬP
emp0.birthday.day
emp0.birthday.month
emp0.birthday.year
Ví dụ về cấu trúc lồng nhau trong C
#include <stdio.h>
#include <string.h>
/**
* dinh nghia cau truc Employee
*/
struct
Employee {
int
id;
char
name[20];
struct
Date {
int
day;
int
month;
int
year;
} birthday;
} e1;
/**
* ham main
*/
int
main() {
// luu tru thong tin employee
e1.id = 100;
strcpy
(e1.name,
"Anh Tran"
);
// chuyen doi chuoi thanh mang char
e1.birthday.day = 20;
e1.birthday.month = 11;
e1.birthday.year = 2001;
// hien thi thong tin sinh vien ra man hinh
printf
(
"employee id: %d\n"
, e1.id);
printf
(
"employee name: %s\n"
, e1.name);
printf
(
"employee birthday (dd/mm/yyyy): %d/%d/%d\n"
, e1.birthday.day,
e1.birthday.month, e1.birthday.year);
return
0;
}
IN RA :
employee id: 100
employee name: Anh Tran
employee birthday (dd/mm/yyyy): 20/11/2001