2022-2023-1 20221330《計算機基礎和程式設計》第十四周學習總結
這個作業屬於那個班級 https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作業要求 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14
作業目標 學習《C語言程式設計》第12章
作業正文 https://www.cnblogs.com/ni-yidan/p/16933456.html
教材內容總結
在第十二章“結構體與資料結構基礎”中,
* 結構體型別的宣告
* 結構體變數的定義
(1)先定義結構體型別再定義變數名
struct student stu1
(2)在定義型別的同時定義變數
(3)直接定義結構體變數(不指定結構體標籤)
用typedef定義資料型別名
* 結構體變數的初始化
* 巢狀的結構體————巢狀的結構體(Nested Structure)就是在一個結構體內包含了另一個結構體作為其成分
* 結構體變數的引用
訪問結構體變數的成員必須使用成員選擇運算子(也稱圓點運算子)
當出現結構體巢狀時,必須以級聯方式訪問結構體成員
* 結構體陣列的定義和初始化
* 結構體指標的定義和初始化
如何訪問結構體指標變數所指向的結構體成員呢?
(1)通過stu1和成員選擇運算子訪問結構體成員
stu1. studentID = 1;
(2)通過pt和指向運算子訪問結構體成員
(pt). studentID = 1;
pt -> studentID = 1;
當結構體巢狀時,如何訪問結構體指標變數所指向的結構體成員?
stu1. birthday. year = 1999;
(
pt -> birthday. year = 1999;
如何定義指向結構體陣列的指標?
如何訪問結構體陣列指標指向的結構體成員?
* 向函式傳遞結構體
(1)向函式傳遞結構體的單個成員
複製單個成員的內容
函式內對結構內容的修改不影響原結構
(2)向函式傳遞結構體的完整結構
(3)向函式傳遞結構體的首地址
* 共用體————sizeof(union number)取決於佔空間最多的那個成員變數
(1)同一記憶體單元在每一瞬時只能存放其中一種型別的成員
(2)起作用的成員是最後一次存放的成員,不能作為函式引數
(3)不能進行比較操作,只能對第一個成員初始化
* 列舉資料型別
(1)描述的是一組整型值的集合
(2)用於當某些量僅由有限個數據值組成時
* 動態資料結構——單向連結串列
特點:用一組任意的儲存單元儲存線性表資料。儲存單元可以是連續的,也可以是不連續的
1.向連結串列中新增節點
(1)若原連結串列為空表(head == NULL) ,則將新建節點p置為頭節點
(2)若原連結串列為非空,則將新建節點p新增到表尾
2.連結串列的刪除操作
(1)若原連結串列為空表,則退出程式;若待刪除節點p是頭節點,則將head指向當前節點的下一個節點即可刪除當前節點
(2)若待刪除節點不是頭節點,則將前一節點的指標域指向當前節點的下一節點
(3)若已搜尋到表尾(p->next == NULL)仍未找到待刪除節點,則顯示“未找到”
3.連結串列的插入操作
(1)若原連結串列為空表,則將新節點p作為頭節點,讓head指向新節點p
(2)若原連結串列為非空,則按節點值的大小(假設已升序排序)確定插入新節點的位置。若在頭節點前插入節點,則將新節點的指標域指向原連結串列的頭節點,且讓head指向新節點
(3)若在連結串列中間插入新節點,則將新節點的指標域指向下一節點且讓前一節點的指標域指向新節點
(4)若在表尾插入新節點,則末節點指標域指向新節點
* 連結串列的輸出
教材學習中的內容
Q: 程式的儲存型別?
A: 儲存型別分別是auto(自動),extern(外部),register(暫存器),static(靜態)
1.auto
在函式體中定義的變數預設是auto.當進入程式碼塊(block)時,系統為自動變數分配記憶體.在塊內,這些變數被定義,並被認為他們是區域性於本塊的.當退出塊時,系統釋放分配給自動變數的記憶體,因此,變數值就丟失了.重新進入塊,系統會為自動變數再次分配記憶體,原先的值已經沒有了.
2.extern
在函式的外部宣告變數,就為變數永久的分配儲存,它的儲存型別是extern。定義在函式外部的變數的儲存型別都是extern,既不使用關鍵字extern.使用extern關鍵字是告訴,編譯器”在本檔案或其他檔案中尋找它”。既a檔案中int a =1在b檔案中則可以使用extern int a;來呼叫它。外部變數從不會消失,因為外部變數在整個程式執行期間都是存在的。
兩種方式向函式傳遞資訊:1.使用外部變數.2.使用引數.當函式從其內部而不是通過引數表改變全域性變數時,會產生副作用.這樣的構造容易引發錯誤.正確的做法是通過引數和返回機制影響全域性變數.
3.register
register高速編譯器應該把有關的變數儲存在高速的記憶體暫存器中.使用儲存於型別register是要試圖改善執行速度.當關系速度時,可選擇一些最經常訪問的變數,並把他們的儲存型別宣告為register.
register i;等價於register int i;,register預設是int型別.
4.static
允許區域性變數儲存它的原有值,以便再進入塊時使用.
void f(void)
{
static int cnt = 0;
}
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
第一週 | 0/0 | 3/3 | 20/20 | |
第二週 | 105/105 | 2/5 | 20/40 | |
第三週 | 150/255 | 2/7 | 20/60 | |
第四周 | 210/465 | 2/9 | 20/80 | |
第五週 | 280/745 | 2/11 | 20/100 | |
第六週 | 320/1065 | 1/12 | 20/120 | |
第七週 | 400/1465 | 1/13 | 20/140 | |
第八週 | 400/1865 | 1/14 | 20/160 | |
第九周 | 400/2265 | 1/15 | 20/180 | |
第十週 | 400/2665 | 1/16 | 20/200 | |
第十一週 | 400/3065 | 1/17 | 20/220 | |
第十二週 | 360/3425 | 1/17 | 20/240 | |
第十三週 | 360/3785 | 1/18 | 20/260 | |
第十四周 | 360/4145 | 1/19 | 20/280 |