C陷阱與缺陷 筆記

2021-07-26 11:31:08 字數 2403 閱讀 7492

fortan: formula translator 公式翻譯程式語言

fibonacci: 斐波那契

為什麼n-->的含義是n-- > 0, 而不是n- ->0?

a+++++b的含義是?

賦值操作符為什麼是=而不是==?

ascii碼

貪心原則?

10是否能表示成010?

單引號括起來的乙個字元表示乙個整數,雙引號括起來的乙個字元代表乙個指標

c語言的定義並不允許巢狀注釋,但c編譯器可以支援

a++的結果不能作為左值(見補充知識點)

c語言允許初始化列表中出現多餘的逗號:能讓自動化的程式設計工具方便地處理很大的初始化列表(每行的格式一樣)

c語言允許初始化列表中多餘的逗號,例如int days = ;為什麼有這種特性?

函式宣告

運算子優先順序,結合性

switch語句中的case和break(c的特色)

函式呼叫要包括函式列表

「懸掛」else

if (x == 0)

if (y == 0) error();

else

寫出void memcpy(char *dest, const char *source, int k)函式, 寫乙個函式void bufwrite(char *p, int n)來一次轉移一批字元到緩衝區,必要時通過函式flushbuffer()重新整理快取。

程式按一定順序生成一些整數,並將這些整數按列出輸出,程式的輸出可能包括若干頁的整數,每頁包括ncols列,每列又包括nrows個元素,每個元素就是乙個待輸出的整數,寫出輸出程式(printnum(), printnl(), printpage()分別是列印對應的內容)

陣列和指標

作為引數的陣列宣告

避免」提喻法」synecdoche

空指標不能解除引用

不對稱邊界

求值順序

整數溢位

外部物件

static 修飾符能夠減少命名衝突

形參、實參與返回值

檢查外部型別

endian的意思是「資料在記憶體中的位元組排列順序」, 表示乙個字在記憶體中或傳送過程中的位元組順序。(little endian 將低序位元組儲存在起始位址, big endian 則相反)

當乙個程式異常終止時,程式輸出的最後幾行常常會丟失,原因?如何解決這個問題?

緩衝輸出與記憶體分配

使用errno檢測錯誤

signal

getchar(putchar)經常被實現為巨集

「表示式」(x) ((x)-1)能否成為乙個合法的c表示式?

使用巨集實現max的乙個版本,其中max的引數都是整數,要求在巨集max的定義中這些整型引數只被求值一次

顯示常量 manifest constant

巨集定義do while(0)

實現atol

對應c語言的標準

識別符號名稱的限制

字元是有符號整數還是無符號

移位運算

大小寫轉化

並非所有的c實現在某塊記憶體被釋放後還能較長時間的保留之

"0123456789"[n % 10]

printf

varargs, stdarg

#include 

#include

void error(char *format, ...)

#include 

intprintf(char *format, ...)

區別

左值&右值

簡單的實現(c++)

// 字首形式

int& int::operator++() //返回值是乙個引用,就是說函式返回值也可以作為乙個左值使用

//字尾形式:

const

intint::operator++(int) //返回值是乙個非左值型的,與字首形式的差別所在

C陷阱與缺陷 筆記

這本書很薄,看目錄感覺講的也很基礎,估計能較快看完。算是開始閱讀前陣子買的那波書的熱身吧。學過編譯原理,我們應當了解,編譯器的工作基本過程。在詞法分析中,不同編譯器的不同設定,會帶來不同的問題。雖然很是細微,但是如果出錯,可能編譯器不提示,讓人抓狂.int a 0195 int b 0215 int...

C陷阱與缺陷筆記

第一章 詞法陷阱 1.1 不同於 1.2 與 不同於 與 1.3 詞法分析中的 貪心法 1.4 整型變數 1.5 字元與字串 第二章 語法陷阱 2.1 理解函式宣告 2.2 運算子的優先順序問題 2.3 注意作為語句結束標誌的分號 2.4 switch語句 2.5 函式呼叫 2.6 懸掛 else引...

《C陷阱與C缺陷》筆記

if x 0 else if x 0 char r,malloc r malloc strlen s strlen t 1 if r strcpy r,s strcat r,t free r include void main setbuf stdout buf 所有寫入stdout的輸出都使用bu...