字串 .5
w(「w
」周,下同)
知識點checklist
1、strlen()函式的返回值是什麼型別的?
size_t型別 一種和機器相關的unsigned型別。類似的還有wchar_t,ptrdiff_t.。在新標準中wchar_t已經成為乙個新的型別關鍵字。
2、字串strlen()
的值,是否和他佔據的記憶體空間相同?
少1. 3、
你是否知道strcpy
函式存在的潛在風險?如何避免?
源字串必須是以"\0"做結尾。目標字串空間應該大於源字串。
4、如果乙個字串沒有字串結束符,而呼叫str
開頭的庫函式,會發生什麼?
一直往下之下直到找到空字元。
5、strcpy(),strcat(),strcmp(),strncpy(),strncat(),strncmp()內部到底是如何執行的?這些函式到底對源字串和目標字串做了些什麼?你是否觀察過它們執行時兩個字串記憶體的變化?
使用指標來實現的
6、上面這些函式使用時,各有哪些需要注意的地方?
7、你會幾種字串查詢操作?
8、c語言中有字串這個資料型別嗎?沒有 只有字元陣列
9、對字串進行操作的時候,是否為字串結尾符預留儲存位置?不然的話容易造成非常訪問記憶體。
陣列 知識點checklist
1、 你肯定知道,定義「int a[10];
」,a[10]
這個元素是無效的。
2、 你知道幾種陣列初始化的方法?
a直接單個的賦值b記憶體拷貝或者字串拷貝賦值c直接把字串賦值給字元陣列。
3、 陣列和指標有千絲萬縷的聯絡而又不同,你是否對他們在不同情況下的使用進行過詳細的總結?
4、 「int calendar[10][20];
」,這是乙個什麼樣的陣列?它擁有
10陣列型別的元素,還是
20個?
5、 「int a[10];
」,陣列名
a在本質上是乙個什麼?你是否列印過
a的值?
常量指標
6、 你知道幾種獲取陣列某元素的方法?
陣列下標和指標記數訪問
7、 指標和陣列相同嗎?什麼時候相同?什麼時候不同?
大多數時候都相同
8、 用指標和下標訪問陣列元素,那種方式更快?
指標(原因未查)
結構體
知識點checklist
1、你知道什麼是位域結構體嗎?如何定義它?如何使用它?
2、你知道位元組對齊對結構體占用記憶體空間大小的影響嗎?如何計算結構體占用記憶體的大小?
巨集 知識點checklist
1、你知道巨集的本質是什麼嗎?函式?語句?型別定義?或者其他?
2、你知道語言設計者為什麼設計巨集嗎?這些原因目前是否仍然成立?
3、你會設計帶有引數的巨集嗎?
4、你知道使用巨集的引數的的時候的注意事項嗎?
5、你會設計帶有可變引數的巨集嗎?
6、你知道使用巨集有什麼劣勢嗎?
7、你有沒有更好的替代方案?
列舉 0.5w
知識點checklist
1、是否可以指定列舉中各項的值?
2、如果不指定值,列舉的第乙個值是多少?
3、列舉的值是否可以是負數?
4、定義列舉的時候,你是否專門定義了列舉的最小值和最大值?
switch
0.5w
知識點checklist
1、switch(c)中的
c的資料型別有哪些?
2、你是否在所有的switch
中都加了
default
語句?3、
是否在所有的case
中都加了
break
語句(一般情況的做法)?如果你不加
break
,將會發生什麼?
static
知識點checklist
1、 static的三個主要作用是什麼?
2、 static的修飾的區域性變數是儲存在什麼地方的?全域性變數哪
?3、
static修飾的全域性變數和函式,在其他的檔案中是否可以訪問?如何訪問?
4、 你知道static是c
語言中實現封裝和隱藏的利器嗎?你是否經常使用?
5、 定義在不同原始檔中的static
全域性變數,編譯器是否允許他們的變數名稱相同?他們在記憶體中的位址是否相同?函式那?
const
知識點checklist
1、你是否經常使用const
來表明不能夠被更改的變數?
2、你是否經常使用const
常量來代替巨集?
3、下面四種情況,你知道是各表示什麼意思嗎?
int i_value= 10;
const int* pvalue = &
i_value
int const *pvalue = &
i_value
int* const pvalue= &
i_value
const int* const pvalue = &
i_value
4、你知道const
常量如何初始化嗎?
sizeof
知識點checklist
1、 對於字元陣列,strlen
和sizeof
的值是否相同?
2、 s
izeof本質上是函式還是巨集?
3、 s
izeof的返回值是什麼型別?指標
知識點checklist
1、 「int *p;」&p
,p,*p
他們的值分別表示什麼含義?
2、 你定義的指標初始化了沒?
3、 你理解指標的指標的概念嗎?你會使用嗎?
4、 「int *pi_value;
pi_value
= 0x100000;
」 pi_value + 1
的值是是多少?
5、 你會定義函式指標嗎?
6、 你會使用函式指標呼叫函式嗎?
7、 關於指標和陣列,請參見知識點陣列。
動態分配記憶體
知識點checklist
1、 動態分配的記憶體是儲存在什麼地方的?
2、 什麼情況下使用動態分配記憶體?
3、 動態申請記憶體一定要釋放,否則會記憶體洩露。你是否使用過記憶體檢測工具?
函式 知識點checklist
1、 如何檢視函式在記憶體中的位址?
2、 如何給乙個函式指標賦值?
3、 你是否會定義可變入參函式
4、 你是否可以區分函式的形參與實參?
5、 如何定義函式名,以準確的表達函式的用途?
6、 你是否使用const
來修飾函式入參和返回值,以表的特定的含義?
7、 遞迴如何使用?
變數 知識點checklist
1、 全域性變數,區域性變數,常量分別儲存在記憶體中的什麼地方?
2、 不同型別的變數,你是否知道其作用域?
3、 全域性變數和區域性變數是否可以重名?你是否在這樣做?
4、 區域性變數在函式退出後是否有效,為什麼?
5、 全域性變數為什麼不允許定義在標頭檔案中?有何危害?
鏈結(linux
)知識點checklist
1、 鏈結位於編譯過程的那個階段?
2、 動態鏈結庫和靜態鏈結庫使用時有何區別?
3、 如何對
動態鏈結庫
進行動態載入
(不用重啟程式而載入鏈結庫)?
4、 動態鏈結有何優點?
5、 動態鏈結庫中是否定義了非static
的全域性變數?你是否知道這是乙個非常危險的動作?
6、 動態庫中的全域性變數(非static
)和函式(非
static
)是否可以和上層全域性變數和函式重名?重名後會發生什麼事情?
執行時的資料結構
(linux
)知識點checklist
1、你知道什麼是段的概念嗎?
2、可執行程式可以分為幾個段?每個段儲存的是什麼內容?
3、如何檢視可執行程式各個段的大小?
4、當函式被呼叫時發生了什麼?
5、你有沒有試過程式的棧空間最大有多大?程式超過此大小會發生什麼?
6、你使用的系統的棧是向下生長的,還是向上生長的?
include
0.5w
知識點checklist
1、如何避免對同一標頭檔案的多次include?宣告
1w 知識點checklist
1、什麼是
宣告,什麼是定義?
2、你是否會運用c
語言宣告的優先順序規則?
字串知識點checklist
知識點checklist 1 strlen 函式的返回值是什麼型別的?2 字串strlen 的值,是否和他佔據的記憶體空間相同?3 你是否知道strcpy 函式存在的潛在風險?如何避免?4 如果乙個字串沒有字串結束符,而呼叫str 開頭的庫函式,會發生什麼?5 strcpy strcat strcm...
c語言 知識點
遞迴方法 遞迴相比迴圈時間上快些,但是 遞迴比較占用空間,如果遞迴的次數超過十萬次後會導致資源占用完畢 標準的 優化技巧 消除迴圈 函式迴圈 函式 就地擴充套件 公共子表示式消除 改進暫存器分配 省略執行時對陣列邊界的檢查 迴圈不變數 移動 操作符長度消減 把指數操作符轉變為乘法操作 把乘法操作變為...
c語言知識點
2019 3 4 typedef void voidp 等同於typedef void voidp voidp a a null 即定義了乙個可以指向任何型別的指標 typedef voidpf zallback open file func of voidpf opeaque,const char...