第十三回合:結構體大集合
A: 結構體:是數據結構類型,把有內在聯繫的不同類型的數據統一成一個整體,使它們相互關聯。又是變量的集合,可以單獨使用其的成員。
定義:
struct 結構體名
{
類型標識符 成員名1;
類型標識符 成員名2;
……
}; //分號一定不能省
PS:
(1) 結構定義並不預留內存,結構體變量的定義才引起存儲分配
(2) 結構體成員的數據類型可以是C語言的基本數據類型,也可以是數組和指針類型。還可以是自定義類型,成員的排列不分先後次序
(3) 結構體名是合法命名的標識符
(4) 結構定義僅描述了一個結構的形式。如果要在程序裏使用結構,需要聲明結構變量。
B: 結構體的輸入輸出
(a) 結構體變量不能整體輸入輸出,要通過成員運算符“.”,逐個訪問其成員
如:
聲明:
struct date
{ int year;
int month;
int day;
};
struct date birth;
輸出的格式:
正確的輸出格式:
printf("%d, %d, %d",birth.year, birth.month, birth.day);
下面的方法是錯誤的:
printf("%d,%d, %d",birth);
C:結構體變量的初始化
(a) 一般形式:
結構體類型名 結構體變量= {初始表};
(b)
1)間接初始化
strict ST
{
int num ;
char name[20];
char sex;
float score;
struct date birthday;
};
下面在main()中初始化
Struct STstudent ={102, "Zhangsan", 'M', 85,{1980,9,20}};
2)直接在結構體定義時初始化
strict ST
{
int num ;
char name[20];
char sex;
float score;
struct date birthday;
} student ={102, "Zhangsan", 'M', 85,{1980,9,20} } ;
D:結構體數組和結構體指針的定義、初始化跟上面的都一樣,沒什麼不同。只不過結構體指針的訪問除了用運算符“.”(點)訪問,還可用指向運算符“->”訪問(位置還是和用‘.’訪問的位置一樣)。
(複習做的筆記,還在整理中。。。。)