深入學習C語言知識點checklist

來源:互聯網
上載者:User

 字串
學習時間:1.5W(“W”周,下同)
知識點checklist
strlen()函數的傳回值是什麼類型的?
字串strlen()的值,是否和他佔據的記憶體空間相同?
你是否知道strcpy函數存在的潛在風險?如何避免?
如果一個字串沒有字串結束符,而調用str開頭的庫函數,會發生什嗎?
Strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()內部到底是如何啟動並執行?這些函數到底對源字串和目標字串做了些什嗎?你是否觀察過它們運行時兩個字串記憶體的變化?
上面這些函數使用時,各有哪些需要注意的地方?
你會幾種字串尋找操作?
c語言中有字串這個資料類型嗎?
對字串進行操作的時候,是否為字串結尾符預留儲存位置?不然的話容易造成非常訪問記憶體。

數組
學習時間:2W
知識點checklist
你肯定知道,定義“int a[10];”,a[10]這個元素是無效的。
你知道幾種數組初始化的方法?
數組和指標有千絲萬縷的聯絡而又不同,你是否對他們在不同情況下的使用進行過詳細的總結?
“int calendar[10][20];”,這是一個什麼樣的數組?它擁有10數群組類型的元素,還是20個?
“int a[10];”,數組名a在本質上是一個什嗎?你是否列印過a的值?
你知道幾種擷取數組某元素的方法?
指標和數組相同嗎?什麼時候相同?什麼時候不同?
用指標和下標訪問數組元素,那種方式更快?

結構體
學習時間:1W
知識點checklist
你知道什麼是位域結構體嗎?如何定義它?如何使用它?
你知道位元組對齊對結構體佔用記憶體空間大小的影響嗎?如何計算結構體佔用記憶體的大小?

宏
學習時間:1W
知識點checklist
你知道宏的本質是什麼嗎?函數?語句?類型定義?或者其他?
你知道語言設計者為什麼設計宏嗎?這些原因目前是否仍然成立?
你會設計帶有參數的宏嗎?
你知道使用宏的參數的的時候的注意事項嗎?
你會設計帶有可變參數的宏嗎?
你知道使用宏有什麼劣勢嗎?
你有沒有更好的替代方案?

枚舉
學習時間:0.5W
知識點checklist
是否可以指定枚舉中各項的值?
如果不指定值,枚舉的第一個值是多少?
枚舉的值是否可以是負數?
定義枚舉的時候,你是否專門定義了枚舉的最小值和最大值?

Switch
學習時間:0.5W
知識點checklist
switch(c)中的c的資料類型有哪些?
你是否在所有的switch中都加了default語句?
是否在所有的case中都加了break語句(一般情況的做法)?如果你不加break,將會發生什嗎?

Static
學習時間:1W
知識點checklist
static的三個主要作用是什嗎?
static的修飾的局部變數是儲存在什麼地方的?全域變數哪?
static修飾的全域變數和函數,在其他的檔案中是否可以訪問?如何訪問?
你知道static是c語言中實現封裝和隱藏的利器嗎?你是否經常使用?
定義在不同源檔案中的static全域變數,編譯器是否允許他們的變數名稱相同?他們在記憶體中的地址是否相同?函數那?

const
學習時間:1W
知識點checklist
你是否經常使用const來表明不能夠被更改的變數?
你是否經常使用const常量來代替宏?
下面四種情況,你知道是各表示什麼意思嗎?
int  i_value= 10;
const  int* pvalue = &i_value
int  const *pvalue = &i_valueint*  const  pvalue= &i_value
const  int* const  pvalue = &i_value
你知道const常量如何初始化嗎?

Sizeof
學習時間:1W
知識點checklist
對於字元數組,strlen和sizeof的值是否相同?
Sizeof本質上是函數還是宏?
Sizeof的傳回值是什麼類型?

指標
學習時間:3W
知識點checklist
“int *p;”&p,p,*p他們的值分別表示什麼含義?
你定義的指標初始化了沒?
你理解指標的指標的概念嗎?你會使用嗎?
“int *pi_value; pi_value = 0x100000;” pi_value + 1的值是是多少?
你會定義函數指標嗎?
你會使用函數指標調用函數嗎?
關於指標和數組,請參見知識點數組。

動態分配記憶體
學習時間:1W
知識點checklist
動態分配的記憶體是儲存在什麼地方的?
什麼情況下使用動態分配記憶體?
動態申請記憶體一定要釋放,否則會記憶體泄露。你是否使用過記憶體偵查工具?

函數
學習時間:1W
知識點checklist
如何查看函數在記憶體中的地址?
如何給一個函數指標賦值?
你是否會定義可變入參函數
你是否可以區分函數的形參與實參?
如何定義函數名,以準確的表達函數的用途?
你是否使用const來修飾函數入參和傳回值,以表的特定的含義?
遞迴如何使用?

變數
學習時間:1W
知識點checklist
全域變數,局部變數,常量分別儲存在記憶體中的什麼地方?
不同類型的變數,你是否知道其範圍?
全域變數和局部變數是否可以重名?你是否在這樣做?
局部變數在函數退出後是否有效,為什嗎?
全域變數為什麼不允許定義在標頭檔中?有何危害?

連結(linux)
學習時間:1W
知識點checklist
連結位於編譯過程的那個階段?
動態連結程式庫和靜態連結庫使用時有何區別?
如何對動態連結程式庫進行動態載入(不用重啟程式而載入連結庫)?
動態連結有何優點?
動態連結程式庫中是否定義了非static的全域變數?你是否知道這是一個非常危險的動作?
動態庫中的全域變數(非static)和函數(非static)是否可以和上層全域變數和函數重名?重名後會發生什麼事情?

運行時的資料結構(linux)
學習時間:1W
知識點checklist
你知道什麼是段的概念嗎?
可執行程式可以分為幾個段?每個段儲存的是什麼內容?
如何查看可執行程式各個段的大小?
當函數被調用時發生了什嗎?
你有沒有試過程式的棧空間最大有多大?程式超過此大小會發生什嗎?
你使用的系統的棧是向下生長的,還是向上生長的?

Include
學習時間:0.5W
知識點checklist
1、如何避免對同一標頭檔的多次include?

聲明
學習時間:1W
知識點checklist
什麼是聲明,什麼是定義?
你是否會運用c語言聲明的優先順序規則?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.