第三週工作學習總結
任務
- 重寫人民幣大小寫轉換;
- 實現20位數×20位數的大數乘法;
- 閱讀編程規範;
- 完成《現代操作系統》前三章閱讀;
- 實現控制檯打印*圖形如下:
完成情況
- 完成
- 完成
- 完成
- 完成
- 未完成
新學內容
一、函數scanf_s
相比於scanf()輸入函數,可以多分配一個單位的內存以保護程序的正常運行,但是不能保證結果正確;
在申請最大容量時,多申請一個單位的內存能夠避免失誤賦值引起的越界操作;
數組名可作爲實參傳遞給指針形參,實際也是將數組首地址賦值給指針,因此在調試處顯示現存數據是隻顯示首地址處的值,類型仍然爲指針類型。要查看數組的值,需要到內存窗口查看;
函數memset()可對任何內存塊進行初始化賦值操作;
當需要內存拷貝時,用memcpy()替換for循環操作,效率要高。
二、編程規範學習
1.頭文件
依賴:本章節特指編譯依賴。若x.h包含了y.h,則稱作x依賴y。依賴關係會進行傳導,如x.h包含y.h,
而y.h又包含了z.h,則x通過y依賴了z。
某產品更有一個“優秀實踐”,用於將.c文件通過工具合併成一個比較大的.c文件,從而大幅度提高
編譯效率。其根本原因還是在於通過合併.c文件減少了頭文件解析次數。但是,這樣的“優秀實踐”
是對合理劃分.c文件的一種破壞。
我們傾向於減少包含頭文件,尤其是在頭文件中包含頭文件,以控制改動代碼後的編譯時間。
2.原則
{0}. 頭文件中適合放置接口的聲明,不適合放置實現;
{0}. 頭文件應當職責單一;
{0}. 頭文件應向穩定的方向包含:依賴的方向應該是:產品依賴於平臺,平臺依賴於標準庫。
3.規則
每一個.c文件應有一個同名.h文件,用於聲明需要對外公開的接口;
禁止頭文件循環依賴;
.c/.h文件禁止包含用不到的頭文件;
頭文件應當自包含——自包含就是任意一個頭文件均可獨立編譯;
總是編寫內部#include保護符(#define 保護);
禁止在頭文件中定義變量;
只能通過包含頭文件的方式使用其他.c提供的接口,禁止在.c中通過extern的方式使用外部
函數接口、變量;禁止在extern “C”中包含頭文件;
小結
- 調試消除warning(s),每一處警告都可能被攻擊;
- 測試程序時考慮邊界測試和非法輸入,增強程序健壯性。
- 提高程序可讀性,應用編程規範書寫代碼。