20 02 26筆記 《C語言陷阱與缺陷》

2021-10-03 06:10:43 字數 854 閱讀 4635

1.如下**:

char

*r,malloc()

;r =

malloc

(strlrn

(s)+

strlen

(t))

;strcpy

(r,s)

;strcat

(r,t)

;

錯誤原因:1.malloc函式分配記憶體是否成功未做判斷;2.給r分配記憶體後未釋放;3.malloc未分配足夠空間的記憶體。

修改後為:

char

*r,malloc()

;r =

malloc

(strlrn

(s)+

strlen

(t)+1)

;if(!r)

strcpy

(r,s)

;strcat

(r,t)

;free

(r);

2.**:

char

*p,*q;

p="xyz"

;

此時p的值是乙個指向由』x』,『y』,『z』和』\0』4個字元組成的陣列的起始元素的指標。

注:複製指標並不同時複製指標所指向的資料。

3.空指標並不是空字串,它表示不指向任何地方。

4.extern是c語言中的乙個關鍵字,它用來說明「此變數/函式是在別處定義的,要在此處引用」。可用來拓展作用域。

5.程式輸出有兩種方式:一是即時處理方式(較高的系統負擔),另一種是先暫存起來,然後再大塊寫入的方式。c語言通常用庫函式setbuf實現控制產生的輸出資料量。

C語言程式學習(三)筆記

實現變數的需要 1.有地方放輸入的數字 2.有辦法輸入數字 3.輸入的數字能參與計算。輸入行為是以行為單位進行的,按下回車鍵就是行的結束,按下回車鍵時,程式不會讀到任何東西 int price 0 變數的名字是price,型別是int,初始值是0 變數是乙個儲存資料的地方 變數定義一般形式 型別名稱...

C語言程式學習(四)筆記

乙個表示式是一系列運算子和運算元的組合,用來計算乙個值 運算子 operator 是指進行運算的動作,比如加法運算子 減法運算子 運算元 operand 是指參與運算的值,這個值可能是常數,也可能是變數,還可能是乙個方法的返回值。只有乙個運算元的運算子 優先順序比乘除高。int a 10 int b...

C語言程式學習(一)筆記

讓計算機做計算,就需要找出計算的步驟,然後用程式語言寫出來。計算機做的所有事情都叫計算。解釋 借助乙個程式,那個程式能試圖理解你的程式,然後按照你的要求執行。編譯 借助乙個程式,像翻譯,把你的程式翻譯成計算機真正能懂的語言 機器語言 然後機器語言寫的程式能直接被機器執行。翻譯的過程即編譯 語言無編譯...