C語言中的嵌套結(jié)構(gòu)體表示在一個(gè)結(jié)構(gòu)體中可以使用另一個(gè)結(jié)構(gòu)作為成員。在C語言中定義結(jié)構(gòu)體嵌套有兩種方法:
1. 獨(dú)立結(jié)構(gòu)
我們可以創(chuàng)建2個(gè)結(jié)構(gòu)體,但在主結(jié)構(gòu)中應(yīng)該使用依賴其它結(jié)構(gòu)體作為成員。我們來看看嵌套結(jié)構(gòu)體的代碼。
struct Date
{
int dd;
int mm;
int yyyy;
};
struct Employee
{
int id;
char name[20];
struct Date doj; // 嵌套一個(gè)結(jié)構(gòu)體:Date,用于存儲(chǔ)日期
}emp1;
如上所見,doj(加入日期)是Date類型的變量。 這里doj用作為Employee結(jié)構(gòu)體中的成員。通過這樣的方式,我們可以在其他結(jié)構(gòu)體中使用Date結(jié)構(gòu)。
2.嵌入式結(jié)構(gòu)體
我們可以在結(jié)構(gòu)體內(nèi)定義結(jié)構(gòu)體,它比第一種方式需要更少的代碼。但它不能用于其它結(jié)構(gòu)中。
struct Employee
{
int id;
char name[20];
struct Date
{
int dd;
int mm;
int yyyy;
}doj;
}emp1;
我們可以通過Outer_Structure.Nested_Structure.member訪問嵌套結(jié)構(gòu)的成員,如下所示:
e1.doj.dd
e1.doj.mm
e1.doj.yyyy
我們來看看C語言中嵌套結(jié)構(gòu)體的一個(gè)簡單例子。創(chuàng)建一個(gè)源代碼文件:nested-structure.c,其代碼如下 -
#include <stdio.h>
#include <string.h>
struct Employee
{
int id;
char name[20];
struct Date
{
int dd;
int mm;
int yyyy;
}doj;
}e1;
int main()
{
//storing employee information
e1.id = 1001;
strcpy(e1.name, "Maxsu");//copying string into char array
e1.doj.dd = 12;
e1.doj.mm = 11;
e1.doj.yyyy = 2018;
//printing first employee information
printf("employee id : %d\n", e1.id);
printf("employee name : %s\n", e1.name);
printf("employee date of joining (dd/mm/yyyy) : %d/%d/%d\n", e1.doj.dd, e1.doj.mm, e1.doj.yyyy);
return 0;
}
執(zhí)行上面示例代碼,得到以下結(jié)果 -
employee id : 1001
employee name : Maxsu
employee date of joining (dd/mm/yyyy) : 12/11/2018