C Primer Plus學習筆記三(第四章)

2021-07-03 08:42:38 字數 2711 閱讀 1672

c++ primer plus學習筆記三(第四章) 目錄

1)建立和使用陣列

2)字串

3)字串的輸入

4)string類

5)結構

1)建立和使用陣列

a)陣列被稱為復合型別,是因為它是使用其它型別來建立的。不能僅僅將某種東西宣告為陣列,它必須是特定型別的陣列。

b)如果將乙個值賦給不存在的元素months,編譯器並不會指出錯誤,但是會引發問題,可能破壞資料或**,或者導致程式異常終止。

c)將sizeof運算子用於陣列名,得到的是整個陣列的位元組數。但如果用於陣列元素,得到的是元素的長度(單位位元組)。

d)初始化時,提供的值可以是少於陣列的元素數目。如果只對一部分賦值,則其它預設為0。如果初始化陣列方括號【】內為空,則編譯器計算元素個數。但注意:讓編譯器去計算元素個數的方法很糟糕,可能計數與你想象的不一樣。

e)大括號初始化可省略等號(=),如double earning。注意,列表初始化禁止縮窄轉換。

long profits【】//出錯,因為將浮點數轉換為整形是縮窄操作。

2)字串

a)c風格--以空字元結尾,空字元被寫為\0,其ascii碼為0,用來標記字串的結尾。

b)在確定儲存字串所需的最短陣列時,別忘了將結尾的空字元計算在內。

c)字串常量與字元常量不可互換。

char shirt_size='s';//單引號,表示字元常量

char shirt_size="s";//雙引號,表示字串常量,實際上是字串的記憶體位址。

d)c++允許拼接字串字面值,即將兩個用引號括起的字串合併為乙個。任何兩個空白(空格、製表符和換行符)分隔的字串常量都將自行拼接成乙個。第二個字串的第乙個字元緊跟在第乙個字串的最後乙個字元後面。

cout<<"good good study"

"day day up"<

f)strlen()函式返回的是儲存在陣列中的字串的長度,而不是陣列本身的長度,且只計算可見的字元,而不把空字元計算在內。

3)字串的輸入

a)getline()和get()在istream類中,都將讀取一行輸入,直到到達換行符。然而,getline()將丟棄換行符,而get()將換行符保留在輸入序列中。

b)getline讀取整行。cin.getline()有兩個引數,第乙個是陣列名,第二個是讀取的字元數。如引數為20,則最多讀入19個,加乙個空字元。getline在讀取指定數目的字元或遇到換行符時停止讀取。

cin.getline(name,20);

c)get第一種用法跟getline一樣,但是get並不丟棄換行符,將其保留在輸入佇列中。第二次次呼叫get()時,遇到的第乙個字元便是換行符,影響讀入。於是第二種方法出現,cin.get()不帶任何引數,呼叫它可讀取下乙個字元,可處理換行符。

cin.get(name,arsize);

cin.get();

cin.get(dessert,arsize); 或者

cin.get(name,arsize).get();//拼接起來使用

cin.getline(name1,arsize).getline(name2,arsize);//把輸入中連續的兩行分別讀入到陣列name1和name2中

4)string類

a)string類包含在標頭檔案string中,位於命名空間std中。

可以使用c風格字串來初始化string物件。

可以使用cin來將鍵盤輸入儲存到string物件中。

可以使用cout來顯示string物件。

可以使用陣列表示法來訪問儲存在string物件中的字元。

b)string物件和字元陣列之間的主要區別是,可以將string物件宣告為簡單變數,而不是陣列。

string str1;

string str2="panther";

c)不能將乙個陣列賦給另乙個陣列,但可以將乙個string物件賦給另乙個string物件。string類簡化了字串合併操作。可以使用運算子+將兩個string物件合併起來,還可以使用運算子+=將字串附加到string物件的末尾。

string str3;

str3=str1+str2;

str1+=str2;

d)strcpy()將字串複製到字元陣列中,strcat()將字串附加到字元陣列末尾。

strcpy(charr1,charr2);

strcat(charr1,charr2);

e)新型別

wchar_t title[ ]=l "chief astrogator";

char16_t name[ ]=u "felonia ripova";

char32_t car[ ]=u "humber super sbipe";

5)結構

a)定義結構後,便可以建立這種型別的變數了。

struct inflatable{};

inflatable hat;

inflatable mainframe;

b)c++11也支援將列表初始化用於結構,且等號(=)是可選的。如果大括號內未包含任何東西,各個成員都將被設定為0。

inflatable duck;

c)可以使用賦值運算子(=)將結果賦給另乙個同型別的結構,這樣結構中每個成員都將被設定為另乙個結構總相應成員的值,即使成員是陣列。這種賦值叫成員賦值。

d)結構陣列。可以建立元素為結構的陣列,方法和建立基本型別陣列完全相同。

c primer plus學習筆記

1.變數名命名規則 重要的 1 有含義 2 只能用字母字元 數字和下劃線 3 第乙個字元不能是數字 4 區分大小寫 5 不能用c 關鍵字 2.整型 1 無符合型別不能表負值 2 char short 16 int short long 32,int 和longlong 64,long c 11 寬度...

C PrimerPlus學習筆記

if語句中判斷恒等,將常量放前,防止由於 寫成 造成的難以查詢的bug。if 0 count 若寫成 0 count 會報錯,count 0 則不會命名空間 using namespace std cout one cout two std cout one std cout two using s...

C Primer Plus學習筆記

1.組合語言是特地的cpu設計所採用的一組內部指令的助記符,不同的cpu型別使用不同的cpu c給予你更多的自由,也讓你承擔更多的風險 自由的代價是永遠的警惕 2.目標 檔案 可執行檔案和庫 3.可以用畫幾個盒子的方式來跟蹤乙個程式的變數 一門語言的語法就是一套規則,用於管理這種語言中的合法語句組織...