《C Primer Plus》 復合型別

2022-03-09 14:47:58 字數 2160 閱讀 2805

typename arrayname[arraysize]

要求arraysize在編譯是已知,不能是變數。

陣列作為由基本型別組成的復合資料型別,arrayname要強調是對應基本資料型別組成的陣列(特定陣列)

通過下標或索引單獨訪問各個元素(可能引發陣列越界的問題,int a[20],容易錯誤訪問a[20])

陣列可使用列表初始化,即c++11可省略=

char ch[4];

65在char的範圍內char string[4]=;

char string="her";

已空字元結尾的字元陣列是字串,c-風格字串,第二種是隱式寫法,會自動加'\0'

cout << "i am a student.\n";

cout <

cout <

c++允許字串的拼接,第乙個字串的隱式'\0'會被第二個字串的第乙個字元代替cstring中含strlen()函式,字元陣列的長度不能小於strlen()+1.cin>> name1cin>> name2

cin已空格,製表符,換行符確定字串結束,例如在name1是輸入bob tom,bob放到name1,tom留在輸入佇列,無需在輸入,cin會在輸入佇列中讀取bob

cin.getline(stringname,num)

以上為將鍵盤輸入寫入到stringname[num]的字元陣列,num包含'\0'

getline()成員函式按行輸入,遇到'\n'結束,捨棄換行符,get()不捨棄換行符,連續輸入採用cin.get(s,num).get()的方式。

cin.getline().getline() //可以看成連續兩次呼叫getline

cin.get().get()返回cin物件,這是一種拼接方式

(cin>>year).get()//處理'\n' year 為int

cin.get(s,num)

#include

string str1;

string str2;

string str3;

cin >> str1;//c++自動調整str1的長度

st2r=str1;

str1=str2+str3;

#include

strcpy(s1,s2)//copy s2 to s1

s1.size()//結果與strlen()等價,但有.說明是物件.類方法(函式)

#include #include//stl c++98 ,動態陣列的替代品

#include//c++11

int main()

;vector b(4);//個數常量或變數

b[0]=1.4;

b[1]=1.2;

b[2]=3.5;

b[3]=6.7;

array c=;

array d;//個數必為常量

vector物件在自由儲存區或堆區,array物件,陣列在棧區,array物件可以賦值給另乙個物件,陣列只能乙個乙個賦值

int * pt=new int ;

delete pt;//不能用delete 連續兩次釋放同乙個記憶體塊

c primer plus復合型別之指標

指標是乙個變數,其儲存的是值的位址,而不是值本身。了解 在討論指標之前,我們先看一看如何找到常規變數的位址,只需對變數應用位址運算子 就可以獲得他的位置,例如 int cups 6 double donuts 4.5 cout cups value 程式輸出 cups value 6 and cup...

c primer plus 復合型別之陣列

編譯器會把陣列名轉換為乙個指標常量,是陣列中的第乙個元素的位址,型別就是陣列元素的位址型別,如 int a 10 陣列名a若出現在表示式中,如int p a 那麼它就轉換為第乙個元素的位址,等價於int p a 0 只有兩種情況下例外 第一種是對陣列名使用sizeof運算子 sizeof a 這將會...

C primer plus 第4章 復合型別

1.陣列初始化 2.字串 兩種方式 c 風格字串 以 0結尾 string類庫 單引號表示字元常量 a 是字串編碼的簡寫,char a a 是正確的。但是 a 表示的是兩個字元a和 0組成的字串,實際上 a 表示的是字串所在的記憶體位址,因此char a a 是非法的 1 cin.getline a...