1.本章學習總結
1.1學習內容總結
結構體的定義
- 一般形式為:
struct 結構名{
類型名 結構成員名1;
類型名 結構成員名2;
…
類型名 結構成員名n;
};
struct是定義結構類型的關鍵字,在struct之后,自行命名一個結構名,它必須是一個合法的C標識符。
例如:
struct student {
int num;
char name[10];
int computer, english, math;
double average;
};
結構體的賦值
- 對結構變量初始化
struct student s1={101,"zhang",78,87,85};
- 結構變量整體賦值
如果兩個結構變量具有相同的類型,則可以將一個結構變量的值賦給另一個結構變量。s2.num=s1.num; strcpy(s2.num,s1.num);
結構體數組排序做法
- 例:學生成績排序
結構體指針用法
- 結構指針
定義:
struct student s1={101,"zhang",78,87,85},*p;
p=&s1;
-
結構指針訪問結構成員
(1)用*p訪問結構成員
(*p).num=101;
(2)用指向運算符->訪問指針指向的結構成員
p->num=101;
-
結構指針作為函數參數
其中第一個形參就是結構指針,調用語句:pos= update_score(students, n,num,course,score);
對應的實參是結構數組名students。
共用體、枚舉類型做法
- 共用體定義:
union 共用體名{
成員列表
};
- 結構體和共用體的區別:
1.結構體的各個成員會占用不同的內存,互相之間沒有影響;而共用體的所有成員占用同一段內存,修改一個成員會影響其余所有成員。
2.結構體占用的內存大於等於所有成員占用的內存的總和,共用體占用的內存等於最長的成員占用的內存。
3.共用體使用了內存覆蓋技術,同一時刻只能保存一個成員的值,如果對新的成員賦值,就會把原來成員的值覆蓋掉。 - 枚舉類型的定義:
enum
枚舉名
{
枚舉值表
};
例如:
enum typeName{
valueName1,
valueName2,
valueName3,
......
};
- 注意:
1.枚舉列表中的valueName1,valueName2,valueName3這些標識符的作用范圍是全局的,不能再定義與它們名字相同的變量。
2.valueName1,valueName2,valueName3等都是常量,不能對它們賦值,只能將它們的值賦給其他的變量。
1.2本章學習體會
- 本章學習結構體及文件,內容多而且比較難理解,書上的知識點也沒有完全理解,寫的時候比較生疏,要不停的翻書。
- 這次代碼量很少,400行左右。
2.綜合作業--“我愛成語”
2.1文件介紹
頭文件idiom.h
- 用於定義結構體USER和IDI以及所有函數聲明。
函數實現文件介紹
文件1 idiom.cpp
- 用於ListMenu()函數,LoginUser()函數和ArrayLiat()函數的實現
文件2 idiomMain.cpp
- 主要做打開文件和函數調用,數據輸入輸出處理。
文件3 Login.cpp
- 用於GetChioce()函數和CheckUserValid()函數的實現
運行結果