正文

for循環(huán)、字符串與數(shù)組(18)

通過游戲編程實戰(zhàn)教新手學C++編程 作者:(美)Michael Dawson


3.9  問與答

問:while循環(huán)和for循環(huán)哪個更好?

答:兩種循環(huán)本身無所謂哪種更好。應使用最符合需求的循環(huán)。

問:什么時候更應當使用for循環(huán)而不是while循環(huán)?

答:while循環(huán)能完成for循環(huán)可以完成的所有任務。然而,有些情況下特別需要使用for循環(huán),例如計數(shù)和遍歷序列。

問:可以在for循環(huán)中使用break和continue語句嗎?

答:當然可以,而且它們的作用和在while循環(huán)中一樣:break用于終止循環(huán),continue用于將控制跳轉到循環(huán)的頂部。

問:為什么程序員傾向于使用i、j和k這樣的變量名作為for循環(huán)的計數(shù)器?

答:您可能不相信,程序員使用i、j和k主要是出于傳統(tǒng)的原因。該傳統(tǒng)始于FORTRAN語言的早期版本,當時的整型變量必須以特定字母開頭,包括i、j和k。

問:不需要包含頭文件就可以使用int或char類型,那么使用字符串時為什么要包含string文件?

答:int和char是內置類型,它們在C++程序中總是可用的。另一方面,string類型不是內置類型,它作為標準庫的一部分定義在文件string中。

問:C風格字符串這個名字源自哪里?

答:C語言中,程序員使用以空字符結尾的字符數(shù)組來表示字符串。這種做法延續(xù)到了C++中。在C++引入新的string類型后,程序員需要將這兩者區(qū)分開來。因此,就將早期的表示方法稱為C風格字符串。

問:為什么應當使用string對象而不是C風格字符串?

答:string對象對比C風格字符串有其優(yōu)勢。最明顯的一點在于,它的大小可動態(tài)調整。使用string時不用指定長度限制。

問:難道就不應當使用C風格字符串嗎?

答:只要可能就盡量使用string對象。如果您正從事的項目中使用的是C風格字符串,那么可能就必須使用它了。

問:什么是運算符重載?

答:運算符重載允許在不同的上下文中對常見運算符的用法進行重定義。重定義的結果雖然不同,但卻是可預見的。例如,用于將兩數(shù)相加的+運算符被string類型重載,以實現(xiàn)字符串的連接。

問:運算符重載不會造成混淆嗎?

答:運算符重載確實給運算符定義了新的含義,但是這個新的含義只在特殊的上下文中才有效。例如,表達式4 + 6中的+運算符很明顯將兩數(shù)相加,而在表達式myString1+ myString2中的+運算符則用于連接字符串。

問:可以使用+=運算符連接字符串嗎?

答:可以。+=運算符已經(jīng)過重載,可以用于字符串。

問:應當使用length()成員函數(shù)還是size()成員函數(shù)來獲取string對象中字符的數(shù)目?

答:length()和size()返回的值相同,都可以使用。

問:什么是判定函數(shù)?

答:判定函數(shù)是指返回true或false的函數(shù)。string對象的成員函數(shù)empty()就是一個判定函數(shù)。

問:如果試圖給數(shù)組邊界外的元素賦值會怎樣?

答:C++允許這樣的賦值。然而,結果會不可預測,而且可能導致程序崩潰。因為這樣更改了計算機內存中某些未知部分。

問:為什么應當使用多維數(shù)組?

答:這是為了讓一組元素使用起來顯得更加直觀。例如,可以用一維數(shù)組表示棋盤,如chessBoard[64];也可以用更加直觀的二維數(shù)組表示,如chessBoard[8][8]。


上一章目錄下一章

Copyright ? 讀書網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號