C Primer Plus 隨記2(第四章)

2021-09-05 12:33:05 字數 2689 閱讀 1475

1.宣告陣列: short months[12]; 訪問其元素:month[0]~month[11]

2.初始化陣列:(1)int yam[3]=; // 列表初始化可省略等號,也可{}不包含資料,元素均初始化為0

(2)int xam[3]; xam[0]=20; xam[1]=3; xam[2]=5;

xam[3]=;//錯,不允許 xam=yam; //錯,不允許將乙個陣列賦給另乙個陣列

long ph=; //錯,列表初始化禁止縮窄轉化,浮點double 轉化為長整型 long 為縮窄轉化

3. (1)c=sizeof yam; //結果是整個陣列的位元組數 c=12;

(2)c=sizeof yam[0]; //結果是元素的位元組數 c=4;

(3) sizeof yam/sizeof yam[0] 可以用於計算陣列元素個數

4. c++標準模板庫(stl)提供了陣列替代品——vector ,c++11新增模板類array.

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

6. 's』是乙個字元常量, 「s」表示兩個字元s和\0組成的字串。 「s」實際上表示字串所在的記憶體位址。

7. 陣列初始化字串常量: char name1[15]=「c++owbody」;

sizeof (name1)=15 ; // 整個陣列長度

strlen(name1)=9; // 儲存在陣列中的字串長度,只計算可見字元,不計算空字元和結束字元\0;

4. 面向行的輸入:一般在輸入名字變數時應使用面向下一行輸入,讀取多個單詞

(1)cin.getline(name,20);//name:陣列名,20:字元數可以讀取一行中不超過字元數的多個單詞, enter生成換行符,並將換行符替換為空字元(1)cin.getline(name,20);//name:陣列名,20:字元數可以讀取一行中不超過字元數的多個單詞, enter生成換行符,並將換行符替換為空字元

(2)cin.get(name,20) ; cin.get(desetr,20) ; //會讀到行尾並保留換行符到輸入佇列中連續2次呼叫get(),在第二呼叫看到的第乙個字元時換行符,認為以達到行尾,無法繼續讀取

正確呼叫方法:cin.get(name,20).get();

5. 空行或其他問題,用以下命令恢復輸入: cin.clear();

6. string 物件宣告為簡單變數,而不是陣列,程式可自動處理string 的大小。利用string,加入標頭檔案 #include

7. (1)char charr1[20]; char charr2[20]=「jagura」 ;

charr1=charr2; //此句陣列賦值語句不合法

strcpy(charr1,charr2); //將charr2複製到charr1

strcat (charr1,charr2); //將charr2附加到charr1末尾,

int len=strlen(charr1); //確定字串中字元數 strlen()是函式

(2)string str1; string str2=「pather」; str1=str2; //最後一句合法

string str3; str3=str1+str2; str2+=str1; //合法

int len=str1.size();//確定字串中字元數 str1是乙個string類 的物件,size()是string類的乙個方法。

6. char charr[20]; cout7. 將下一行輸入讀取到陣列中的**: cin.getline(charr1,20); //這句表明cin是istream類的物件,getline()是istream類的方法

將下一行輸入讀取到string物件中的**:getline(cin.str); //這句表明getline()不是類方法,在istrea類中有處理double,int

//等其他基本型別的類方法,但沒有處理string物件的類方法

cin>>str; //合法,應用了istream類的乙個成員函式cin>>x

10. 結構宣告初始化:#include

struct inflatable;

struct inflatable; //結構可以將string類作為成員,但要指明訪問的命名空間

inflatable duck=;

inflatable bobu; bobu=duck; //結構賦值是有效的

struct peak ala, bay; // ala, bay是結構peak的兩個結構變數。

初始化結構陣列: inflatable guest [2]=, };

11. 共用體:可以儲存不同資料型別,但具體某一時刻只能儲存一種型別。

12. 列舉: enum spectrum ; //符號常量,對應的整數值為0~7

spectrum band; //band只能從列舉spectrum定義的8個常量裡選擇值

設定列舉量的值:指定的值必須為整數

enum bits;

enum bitstep; //first預設為0,後面未初始化的列舉量比前面大1,third =101

enum ; //可以建立多個相同值的列舉量

列舉的取值範圍: bits myflag; myflag=bits(126); //合法,上限為最大值的2的冪-1,2^8-1=127

C Primer Plus學習隨記(五)

5.1 for迴圈 forloop.cpp introducing the for loop include int main 5.1.1 for迴圈的組成部分 1.設定初始值。2.執行測試,看看迴圈是否應當繼續進行。3.執行迴圈操作。4.更新用於測試的值。for initialization te...

C Primer Plus 隨記(第十一章)

1.operator 過載 運算子 operator 過載 運算子 使得可以直接對類類物件進行 或 操作 假設 district,sid,sara 是類salaperson的物件,可編寫 district sid sara 等價於下一句 這兩個都呼叫operator 方法,sid是呼叫物件,sara...

C Primer Plus 隨記(第八章)

1.建立引用變數 int rat int roatents rat 此式中 不是位址運算子,而是型別表示符,roatents是rat的別名,他們指向相同的值和記憶體單元,改變 roatents的值,rat也會變。roatents是乙個引用變數 int prats rat prat是指標 roaten...