C 的學習之路(復合型別)

2021-09-23 20:41:48 字數 1918 閱讀 1998

注意: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管理動態記憶體 建...