extern 關鍵字用於標識符第二次或以後的聲明,並不會改變第一次聲明所指定的屬性。static 則用於防止被外部訪問,這與 Java 中的 static 含義完全不同。
static 變為靜態變量i+++ ++i 這種 5 個加號的表達式,GCC 中間有空格可以通過編譯,甚至可以是 6 個加號 i+++ + ++i,其中一個表示正數。
#define NULL (void*) 0、#define EOF -1int *a; *a=1; 在 Unix 中會導致段違例(segmentation violation)、內存錯誤或總線錯誤*100=25 不是對地址 100 賦值 25,這是非法的;正確寫法 *(int *)100=25; 用於訪問硬件,極少使用* 從右向左結合++ --、順序點:() 不是順序點;; , || && ?: 以及函數的所有賦值之後、第一條語句執行之前、函數返回值已拷貝給調用者但在該函數外代碼執行之前、每個基類和成員初始化之後*cp++ *++cp ++*cp (*cp)++ ++*++cp ++*cp++ *(*cp)++ 後綴 ++ 優先級大於 *,* 不是 ++ 順序點int *func(void); 中 void 提示無參數,而非表示一個 void 類型參數stdarg 宏(stdarg.h):va_list、va_start、va_arg、va_end,用於可變參數處理sizeof 操作數(返回整個數組長度);作為 & 操作數(返回指向數組的指針,而非指向指針常量的指針)array[subscript] 等同於 *(array+subscript),下標甚至可以為負,2[array] 與 array[2] 對編譯器無差別string.h 可讓編譯器更好執行錯誤檢測str 開頭的函數名,用於標准庫擴展size_t strlen(char const *string),size_t 為 unsigned int,程序保護不會溢出strlen(x) - strlen(y) >= 0 永遠為真,因無符號數不可能為負strcpy、strcat 重疊時行為未定義,需程序控制strcmp 返回負、正、零分別表示小於、大於、等於strncpy 總複製 len 長度,不足補 NUL,超長不加 NUL;strncat 總在結果後加 NUL,最多複製 len 加一個 NULstrchr/strrchr 查找字符首次/最後出現位置strpbrk 查找集合中任意字符首次出現strstr 查找子串strspn/strcspn 計算不在/在集合中的初始段長度strtok 分割字符串,會修改原串,保存局部狀態,不可同時解析多字符串strerror 根據 errno 返回錯誤描述ctype.h):iscntrl、isspace、isdigit 等ctype.h):tolower、toupperisupper 等標准函數\0 問題):memcpy、memmove(允許重疊,較慢)、memcmp、memchr、memset* 優先級小於 .,-> 大於 &sizeof 返回整體長度,offsetof(stddef.h)返回成員偏移量int、signed int、unsigned int;分配方向未定義;可用移位屏蔽實現,可移植性較弱初始化必須是第一個元素,位於花括號內,類型不符會轉換並賦給第一個。
calloc(初始化為 0)、malloc、realloc、free。傳遞 NULL 無作用,失敗返回 NULL。定義在 stdlib.h,NULL 定義在 stdio.h。
int (*pf)(int) = &f;,調用 pf(12) 為正道void* 實現靈活但不安全,注意強制轉換繞過類型檢查"0123456789ABCDEF"[value % 16] 轉二進制字符__FILE__、__LINE__、__DATE__、__TIME__、__STDC__#define 可多行,行尾加反斜槓#argument、鄰近連接## 連接符號MAX(x++,y++))#if、#elif、#else、#endif、defined()make 依賴關系#error、#line、#pragma、# 無效指令perror、errno 錯誤處理機制exit 返回狀態給操作系統fflush 強制刷新FILE 結構、標准流 stdin/stdout/stderr、重定向fopen 模式(r/w/a/rb/wb/ab/r+/w+/a+/rb+/wb+/ab+)、返回值檢查fclose、fcloseallfflush、flushall、setbuf、setvbufftell、fseek(SEEK_SET/CUR/END)、rewind、fgetpos/fsetposfeof、ferror、clearerrtmpfile、tmpnamremove、renamestdlib.h:abs/labs、div/ldiv(商餘結構體)rand、srand(常用 time(0) 做種子)math.h:三角、雙曲、指數、對數、冪、平方根、取整、絕對值、餘數atoi/atol/strtol/strtoul/atof/strtod(strtol 保存結束指針,支援基數 2-36)clock、time、ctime、difftime、gmtime/localtime、asctime/strftime、mktime、tm 結構體setjmp/longjmp 非局部跳轉abort/atexit/exit、assert、getenv、system、qsort/bsearch-S 保留匯編代碼