復合型別
cin通過空白(空格、製表符和換行符)來確定字串的結束位置,一位置cin只能讀取乙個單詞。
面向行的輸入:getline()。此函式讀取整行,通過回車鍵輸入的換行符來確定輸入結尾。使用cin.getline()來呼叫。該函式有兩個引數,第乙個引數是用來儲存輸入行的陣列的名稱,第二個引數是要讀取的字元數。如果這個引數為20,則最多讀取19個字元,餘下空間用於儲存自動在結尾處新增的空字元,如:cin.getline(name, 20)。getline()成員函式在讀取指定數目的字元或遇到換行符時停止讀取。
帶引數的cin.get()類似於cin.getline(),無引數的cin.get()呼叫可讀取下乙個字元(即使是換行符),因此可以用它來處理換行符,為讀取下一行做準備。
空行。當getline()或get()讀取空行後將設定失效位置。這意味著接下來的輸入將被阻斷,但可以通過cin.clear()來恢復輸入。
string類簡化了字串合併操作。可以使用「+」將兩個物件合併起來,還可使用運算子+=將字串附加到string物件的末尾。如str3 = str1 + str2; str1 += str2。
c++允許在宣告結構變數時省略關鍵字struct。
與陣列一樣,c++也支援將列表初始化用於結構,且等號是可選的。不允許縮窄變換。
結構可以同時儲存int,long和double,而共用體只能儲存int,double或long。共用體的長度為其最大成員的長度。
共用體的用途之一是,當資料項使用兩種或者更多種格式(但不會同時使用)時,可節省空間。
如果結構識別符號是結構名,則使用句點運算子;如果識別符號是指向結構的指標,則使用箭頭運算子。
自動儲存和靜態儲存。自動儲存和靜態儲存的關鍵在於:這些方法嚴格地限制了變數的壽命。變數可能存在於程式的整個生命(靜態變數),也可能只是在特定的函式被執行時存在(自動變數)。
動態儲存。new和delete運算子提供了一種比自動變數和靜態變數更靈活的方法。管理的記憶體池叫自由儲存空間或堆。new和delete讓你能夠在乙個函式中分配記憶體,而在另乙個函式中釋放。使得資料的生命週期不完全受程式或函式的生存時間控制。此外,讓程式設計師對程式如何使用記憶體有更大的控制權。然而,記憶體管理也更複雜了。
記憶體洩漏。如果使用new運算子在在自由儲存空間(或堆)上建立變數後,沒有呼叫delete,則會發生記憶體洩漏。被****存將在程式的整個生命週期都不可使用;這些記憶體被分配出去,但無法被收回。極端情況會導致應用程式記憶體耗盡,導致程式崩潰。另外,這種洩漏會給一些作業系統或在相同的記憶體空間執行的應用程式帶來負面影響,導致他們崩潰。
模板類vector和array是陣列的替代品。一般而言,下面的宣告建立乙個名為vt的vector物件,它可以儲存n_elem個型別的typename的元素。
vector
vt(n_elem)
;
其中引數n_elem可以是整型常量,也可以是整型變數
模板類array。vector類功能比陣列強大,付出的代價就是效率稍低。如果需要的是長度固定的陣列,使用陣列是更佳的選擇,但代價是不那麼方便和安全。由此引出模板類array,它也位於命名空間std中。與陣列一樣,array物件的長度固定,也使用棧,其效率與陣列相同,但更安全,更方便。下面是宣告建立乙個名為arr的array物件,它包含n_elem個型別為typename的元素:
array<
typename
, n_elem> arr;
與建立vector物件不同的是,n_elem不能是變數。 第四章學習小結
目標 上次設定的目標是跟著老師邊學邊做題。這個目標已經達成了。接下來的目標是把這個當成自己的學習習慣,因為在跟隨老師的思路做題的時候感覺非常的清晰,debug也沒有那麼辛苦。另外乙個目標就是將老師課上留給同學自己去探索的去學習的內容 學習到位。像這一章的兩道基礎題目有 kmp演算法 和 十字鏈 兩種...
C Primer Plus(第6版)第四章程式設計練習
1.編寫乙個程式,提示使用者輸入名和姓,然後以 名,姓 的格式列印出來。include include int main 4.編寫乙個程式,提示使用者輸入身高 單位 英吋 和姓名,然後以下面的格式顯示使用者剛輸入的資訊 dabney,you are 6.208 feet tall 使用float型別...
python學習手冊(第4版) 第四章
在第三章中了解了python關於物件的使用,引入包後,包內的變數均可以作為物件來使用。python程式分解為模組 語句 表示式 物件 1.python程式由模組構成 2.模組包含語句 3.語句包含表示式 4.表示式建立並處理物件 python資料型別 1.動態型別 自動跟蹤你的資料型別,而不需要申明...