注意:1.單引號和雙引號的區別。
可以這樣賦值char a='s'
但是不能這樣賦值char a="s"
因為"s"
實際上表示的是字串所在的記憶體位址,而's'
只是ascii碼83的另一種寫法。
2.strlen()只計算可見字元,不把空字元計算在內。
讀入空格所需的get()和getline()
面向行的輸入getline():
呼叫方法:
1.用cin.getline(),有兩個引數,第乙個用來儲存輸入行的陣列名稱,第二個是要讀取的字元數
cin.getline(name,20)
面向行的輸入get():
與getline()類似,但並不再讀取並丟棄換行符,而是將其留在輸入佇列中。
若連續呼叫兩次get(),由於第一次呼叫後,換行符留在輸入佇列中,所以第二次呼叫所顯示的只會是換行符,不會是輸入的內容。應在中間加一次cin.get()處理換行符。或者用cin.get(,).get()
拼接起來。
注意:當get或者getline輸入大於記憶體的字串時,多出部分會留在輸入佇列中,getline還會設定失效位(failbit)並關閉後面輸入。
可用cin.clear();
來恢復,讓錯誤標識改回為0,可繼續輸入,再用cin.syn()
來清空流
宣告和賦值:
string str1; string str2="panther";
類設計讓程式能夠自動處理string的大小。
優點:陣列不能賦給另乙個陣列,但是可用將乙個string物件賦給另乙個string物件
str1=str2;
也可用+來將兩個string物件合併。
同乙個結構,可以儲存多種型別的資料。
例:宣告:
struct a
使用:
a use =
使用結構中某個成員時用成員運算子(.)來訪問各個成員(感覺與類的物件相似)
結構陣列:
a use[2]=
,}
typename * pointer_name=new typename;
注意:用delete來釋放記憶體delete a;
歸還和釋放的記憶體可供程式其他部分使用。
使用new來建立動態陣列
建立:int* a=new int [10];
new會返回第乙個元素的位址,然後位址賦給a。
釋放:delete a;
要多加乙個[ ],告訴程式釋放的是整個陣列,而不是僅僅指標指向的元素。
使用:把指標當陣列名使用即可。
如:a=a+1;是指a陣列的第二個元素,而不是第乙個元素的值加1。
使用方括號陣列表示法等同於對指標解除引用
a[0] == *a;
a[3] ==*(a+3);
cout識別列印為第乙個字串的位址時,會繼續列印,直到空字元為止。
使用new建立動態結構
建立:a * ps=new a;
訪問成員的方法:不能用(.)只能用(->)
如:ps->price
是被指向結構的price成員,它相當於ps.price
《c++ primer plus》p70-117
C 學習 C 復合型別
1.引用 引用是為某乙個變數起了另乙個名字,定義方式為type rval val 引用型別必須與引用的變數型別完全一致,引用後,rval和val將會被視為乙個變數,只不過有兩種呼叫方式,改變rval的值,val的值會隨之改變,改變val的值,對rval進行呼叫時值也發生了改變。將乙個值繫結後,將無法...
C 復合型別
陣列 陣列是一種資料格式,能夠儲存多個同型別的資料。宣告陣列的通用格式 typename arrayname arraysize arraysize指定了元素的個數,它必須是整型常量 20或者const值 也可以是表示式,但是其中的所有值在編譯時必須是已知的,所以說arraysize不是變數,變數的...
C 復合型別
include include include include include using namespace std 學習進度c primer plus第4章 復合型別 陣列 c風格字串 string變數 getline 和get 結構體 共用體 列舉 指標 new與delete管理動態記憶體 建...