發光風扇書架
廢物利用,把不用的機殼改成書架,風扇由小3pin改為usb。
修改free函數從而增加嚴謹度
#define safeFree(p) saferFree((void**)&(p)); void saferFree(void** p){ if(p!=NULL && *p!=NULL){ free(*p); *p=NULL; } } }
透視C語言指標-閱讀備忘
P.11 NULL在C語言眾多head file中(stdio.h、stdlib.h、stddef.h)皆有下述定義:
#define NULL ((void*)0)
P.13 ASCII NUL無定義於C標頭檔之中,等同於’\0’。
P.14 當指標宣告為global變數或是static變數時,會在程式起始時初始化為NULL。
P.17 size_t等同於unsigned int。
p.27
const int *pci //無法利用解參考更改值。
int * const pci //無法更改pci位址。
const int * const pci //上述兩者之結合。
P.38 釋放struct關鍵字建立的結構,如果結構包含了指向其他動態記憶體的指標,需要先釋放這些指標,否則可能Memory leak。
P.62 介紹stack frame置入方向,先置入參數,再置入回傳位址,之後才是區域變數,都依照宣告的相反順序置入。
P.76 介紹函數指標:
typedef int (*fptr)(int,int);
fptr fptrOperation; 等同於 int (*fptrOperation)(int,int);
近期迴響