正文 第39章 結構體與共用體1(2 / 2)

結構體類型structstudent的成員birthday就是另外一個結構體類型structdate。

結構體變量的定義有以下三種方法:

方法一:先定義結構體類型,再說明結構體變量

structstud

intnum;

charname[10];

floatscore;

};

structstudstu1,stu2;

說明:在定義了結構體變量之後,係統就會為之分配內存單元。結構體變量在內存中所占的字節數等於其各個成員所占的字節數的和。例如,stu1和stu2在內存中各占16個字節(2+10+4=16)。

方法二:在定義結構體類型的同時說明結構體變量

structstud

intnum;

charname[10];

floatscore;

}stu1,stu2;

方法三:直接說明結構體變量

struct

intnum;

charname[10];

floatscore;

}stu1,stu2;

結構體變量中成員的引用形式為:

結構變量名.成員名

如:stu1.score

若成員本身又是一個結構體類型,則必須逐級找到最低級的成員才可以使用。結構體變量的成員和普通變量一樣也可以進行各種運算,具體情況由成員的數據類型決定。

結構體變量的賦值即是給各個成員賦值,可用輸入輸出函數來實現,也可以通過賦值語句實現,如:

scanf("%d",&stu1.num);

stu1.score=85;

注意:不能對結構體變量進行整體賦值。

以下兩種賦值方法是錯誤的:

stu1={6466,"李平",86};

scanf("%d,%s,%f",&stu1);

結構體變量的初始化是指在定義結構體變量的同時,給它的各個成員賦初值,初始化的格式為:

struct結構體類型名

{結構體成員列表;}結構體變量名={初始數據表};

如:

structstudent

intnum;

charname[10];

intage;

charsex;

}a={9932,"王軍",19,M};