C語言基礎知識整理25注釋 除錯及常見錯誤

2021-09-10 23:14:33 字數 2258 閱讀 6434

注釋是給人看的,並非讓計算機執行的。

注釋可以用漢字或英文本元表示。

注釋兩種方式:

1以//開始的單行注釋。(不能跨行,從//開始,到換行符結束)

//如注釋內容一行內寫不下

//可以在下一行重新用「//」,然後繼續寫注釋。

2以/*開始,以*/結束的塊式注釋。(可以跨行)

c89只允許用/*。。。*/形式注釋,c99正式將//注釋納入新標準。

而c++則允許用//形式的注釋,//注釋被稱為「c++風格」的注釋

程式除錯是指對程式的查錯和排錯。

除錯的任務是排除程式中的錯誤,是程式能順利地執行並得到預期地效果。

測試的任務是盡力尋找程式中可能存在的錯誤。就是找出那些不能正常執行的情況和原因。

先進行靜態檢查。即為人工檢查。

力求做到1、應當採用結構化程式方法程式設計,增加可讀性;2、盡可能多加注釋,以幫助理解每段程式的作用;3、在編寫複雜的程式時,不要將全部語句都寫在main函式中,而要多利用函式,用每乙個函式來實現乙個單獨的功能。這樣易於閱讀也便於除錯,各函式之間除用引數傳遞資料這一渠道外,資料間盡量少出現耦合關係,便於分別檢查和處理。

靜態檢查無誤,開始進行程式除錯。由編譯系統進行檢查,發現錯誤,稱動態檢查。

編譯時會給出錯誤資訊,根據資訊進行改正。

改正語法錯誤後,連線得到可執行程式,執行程式,對結果進行分析,看是否符合要求。

執行結果不對,大多屬於邏輯錯誤。

1.將程式與流程圖(或偽**)仔細對照2.如在程式中無錯誤,檢查演算法是否出錯。

有時錯誤很隱蔽,在紙面上難以查出,此時可以採用以下方法利用計算機幫助查出問題所在。

1.取「分段檢查」的方法:在程式不同位置設幾個printf語句,輸出有關變數的值,以檢查是否正常,逐段往下檢查。不斷縮小「查錯區」。2.可以用「條件編譯」指令進行程式除錯。3.有的系統還提供了debug(除錯)工具,根據流程給出相應資訊,使用更為方便,可以查閱有關首手冊。

語法錯誤:即不符合c語言的語法規定;

邏輯錯誤:即通知給系統的指令與解題的原意不相同,出現了邏輯上的錯誤;

執行錯誤

測試時要設想程式執行時的各種情況,測試在各種情況下的執行結果是否正確。

測試的關鍵是正確地準備測試資料。使程式中每一條路徑都有機會執行,觀察其執行是否正常。

測試的目的使檢查程式有無「漏洞」。

(1)忘記定義變數。

(2)輸入輸出的資料的型別與使用者指定的輸入輸出格式宣告不一致。

(3)未注意int和short資料的數值範圍。

(4)在使用輸入函式scanf時,忘記用變數的位址符&。

(5)輸入資料的形式和要求不符。

(6)在用scanf函式向字元陣列輸入資料時,在陣列名前面多加了&。

(7)在用scanf函式向數值型陣列輸入資料時,用數值型陣列名。

(8)語句後面漏分號。

(9)把預處理指令當作c語句,在行末加了分號。

(10)在不該加分號的地方加了分號。

(11)對應該有花括號的復合語句,忘記加花括號。

(12)括號不配對。

(13)在用識別符號時,混淆了大寫字母和小寫字母的區別。

(14)誤把「=」作為「等於」運算子。

(15)引用陣列元素時誤用了圓括號。

(16)在定義陣列時,將定義的「元素個數」誤認為是「可使用的最大下標值」。

(17)對二維或多維陣列的定義和引用的方法不對。

(18)誤以為陣列名代表陣列中全部元素。

(19)混淆字元陣列與字元指標的區別。

(20)在引用指標變數之前沒有對它賦予確定的值。

(21)switch語句的各分支中漏寫break語句。

(22)混淆字元和字串的表示形式。

(23)使用自加(++)和自減(--)運算子時容易出的錯誤。

(24)忘記對所呼叫的函式進行函式原型宣告。

(25)對函式宣告與函式定義不匹配。

(26)在需要加標頭檔案時沒有用#include指令去包含標頭檔案。

(27)誤認為函式形參值的改變會影響實參的值。

(28)函式的實參和形參型別不一致。

(29)不同型別的指標混用。

(30)沒有注意系統對函式引數的求值順序的處理方法。

(31)混淆陣列名與指標變數的區別。

(32)混淆結構體型別與結構體變數的區別,對乙個結構體型別賦值。

(33)使用檔案時忘記開啟,或開啟方式與使用方式不匹配。

(34)在開啟檔案時,指定的檔名找不到。

(35)忘記關閉檔案,雖然系統會自動關閉所用檔案,但可能會丟失資料。因此必須在用完檔案後關閉它。

C語言基礎知識整理

一 關於sizeof和strlen。sizeof 用於計算某型別或者某變數在記憶體中所佔空間。比如整數分為short型,int型,long整型,分別佔2,2 4,4個位元組,int型具體占用幾個位元組和編譯系統有關。我們輸入字串時通常用char陣列 char s 10 scanf s s 輸入的字串...

c語言基礎知識整理

1 sizeof表示獲取乙個變數或一種資料型別佔幾個位元組 2 d表十進位制有符號整數 3 表示賦值,不表示相等 表示相等 4 變數 char字元型別變數short短整型 int整型long長整型 long long長長整型 float單精度浮點數 4個位元組 double雙精度浮點數 8個位元組 ...

C語言基礎知識整理 四

進行巨集字串連線,在巨集中把引數解釋為字串,不可以在語句中直接使用。在巨集定義中,printf s n s 會被解釋為printf s n s include include define trace s printf s n s s int main 輸出為a strhello 在第三次列印中,巨...