3 回答

TA貢獻883條經(jīng)驗 獲得超454個贊
雖然你看到編譯器在那三行報錯,其實錯誤還有很多。 我先列出能找到的錯誤吧:
代碼前面你聲明了strcmp函數(shù),后面你定義了它,但你在定義時少寫了返回類型int。
在strcmp函數(shù)體里那三個if語句中,你是打算遞歸調(diào)用strcmp嗎? ?可是你把參數(shù)寫成了(const char *a, const char *b)。 調(diào)用函數(shù)時應(yīng)該在括號中寫傳入的實參,你卻又把形參聲明一遍,這寫法不合語法,所以在這里報錯。
如前一個回答所說,在這些if語句中 ret == 1; 是判斷語句,并不是賦值。 你應(yīng)該使用單個=來為ret賦值。
strcmp這個函數(shù)是做什么用的? ?看名字似乎你是想實現(xiàn)C函數(shù)庫中的比較字符串函數(shù),不過你這樣寫完全實現(xiàn)不了這個功能。 遞歸調(diào)用的用法錯了,你沒有設(shè)置遞歸截止條件,所以即便你將遞歸調(diào)用的語法寫對,這個strcmp函數(shù)會無限遞歸。 你應(yīng)該好好整理思路,重寫這個函數(shù)的邏輯。
C++標(biāo)準(zhǔn)庫的頭文件不帶 .h 結(jié)尾,所以一開始應(yīng)該寫成 #include <iostream> 這樣。
你代碼中并沒有用到C++的string頭文件,為什么要include它?
在main函數(shù)中,你想用str1和str2來作為字符串,但是你卻將它們聲明成了char類型,這只能表示"單個"字符。 后面你將str1、str2取地址后傳入strcmp函數(shù),這樣strcmp函數(shù)確實接收的是指針類型,所以編譯器沒有報錯,但是完全不合你原本的邏輯。

TA貢獻5條經(jīng)驗 獲得超0個贊
錯誤1:ret==1是判斷語句,不是賦值語句
錯誤2:比較字符串應(yīng)該用string類型的字符串,而不是char
錯誤3:你自己定義的函數(shù)使用了庫函數(shù)strcmp,這是錯誤的

TA貢獻20條經(jīng)驗 獲得超9個贊
ret==1,ret==-1,ret==0是判斷語句,返回值是bool類型,并不是賦值語句,而且你的ret在函數(shù)中并沒有聲明,你的代碼有點莫名其妙,有點難懂。
- 3 回答
- 0 關(guān)注
- 1652 瀏覽
添加回答
舉報