版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2 21 1: :2 20 0: :3 31 121 C+1 C+語言的字符集與詞匯語言的字符集與詞匯1.1.字符集字符集 (1) (1)字母字母 A B C D Z a b c d z A B C D Z a b c d z (2) (2)數(shù)字?jǐn)?shù)字 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 (3) (3)特殊符號特殊符號 空格空格 ! # $ % & . ! # $ % & . * * + + ,- - ? / : ; / : ; _ | _ | 2 21 1: :2 20 0: :3 31 132.2.詞匯:五類詞匯:五類 (1) (1
2、)關(guān)鍵字關(guān)鍵字( (保存字保存字):):系統(tǒng)預(yù)定義且有專門含義的單詞系統(tǒng)預(yù)定義且有專門含義的單詞, ,不允不允許另作它用許另作它用 .C+ .C+的關(guān)鍵字包含了的關(guān)鍵字包含了C C語言的幾乎所有關(guān)鍵字語言的幾乎所有關(guān)鍵字 .C+ .C+的關(guān)鍵字隨的關(guān)鍵字隨C+C+的開展而不斷增加的開展而不斷增加 (2) (2)標(biāo)識符:由程序員為程序中的各種成份定義的名字標(biāo)識符:由程序員為程序中的各種成份定義的名字 . .以字母或以字母或_ _開頭開頭, ,由字母、由字母、_ _、數(shù)字組成、數(shù)字組成 . .不能是關(guān)鍵字不能是關(guān)鍵字 .C+ .C+中的標(biāo)識符區(qū)分大小寫中的標(biāo)識符區(qū)分大小寫 . .見名知義的原那么見
3、名知義的原那么 .C+ .C+系統(tǒng)對標(biāo)識符的長度有一定限制系統(tǒng)對標(biāo)識符的長度有一定限制 (3) (3)直接常量直接常量 (4) (4)運算符運算符 (5) (5)分隔符:用來分隔不同的語法成份的單詞分隔符:用來分隔不同的語法成份的單詞 空格空格 ; # ; # / /* * * */ / /* * *C+C+的兩種注釋的兩種注釋: : ./ ./* * */ ./ / ./ 注釋到行尾注釋到行尾2 21 1: :2 20 0: :3 31 142 2 根本數(shù)據(jù)類型、運算符與表達(dá)式根本數(shù)據(jù)類型、運算符與表達(dá)式每一項數(shù)據(jù)都唯一的屬于某種類型每一項數(shù)據(jù)都唯一的屬于某種類型每一數(shù)據(jù)類型都有一個明確定義
4、的值的集合每一數(shù)據(jù)類型都有一個明確定義的值的集合每一類型的數(shù)據(jù)占用一樣大小的存儲空間每一類型的數(shù)據(jù)占用一樣大小的存儲空間同一類型的數(shù)據(jù)可以進(jìn)展一樣類型的運算同一類型的數(shù)據(jù)可以進(jìn)展一樣類型的運算數(shù)據(jù)類型數(shù)據(jù)類型簡單類型簡單類型復(fù)合類型復(fù)合類型指針類型指針類型 * 用戶定義類型用戶定義類型 enum 基本類型基本類型整型整型 int浮點型浮點型 float字符型字符型 char空類型空類型 void布爾型布爾型 bool數(shù)組數(shù)組 結(jié)構(gòu)體結(jié)構(gòu)體 struct共用體共用體 union類類 class1.C+1.C+的數(shù)據(jù)類型的數(shù)據(jù)類型根本類型是由系統(tǒng)定義根本類型是由系統(tǒng)定義, ,各種語言都具備的類型各
5、種語言都具備的類型復(fù)合類型與指針類型都復(fù)合類型與指針類型都屬于用戶定義類型屬于用戶定義類型2 21 1: :2 20 0: :3 31 15 intint型:整型型:整型 VCVC中占中占4 4字節(jié)字節(jié) floatfloat型型: : 浮點型浮點型 4 4字節(jié)字節(jié) charchar型型: : 字符型字符型 1 1字節(jié)字節(jié) voidvoid型型: : 空類型空類型 boolbool型型: : 布爾型布爾型 1 1字節(jié)字節(jié) 值為值為 true true 或或 falsefalse* * *修飾說明符修飾說明符longlong與與shortshort、signedsigned與與unsignedun
6、signedlonglong和和shortshort修改整型具有的最大值和最小值修改整型具有的最大值和最小值signedsigned和和unsignedunsigned告訴編譯器如何處理整型和字符型數(shù)告訴編譯器如何處理整型和字符型數(shù)據(jù)的最高位據(jù)的最高位 floatfloat型可用型可用doubledouble和和longlong doubledouble修飾,修改實型數(shù)據(jù)修飾,修改實型數(shù)據(jù)的表數(shù)范圍和精度的表數(shù)范圍和精度2 21 1: :2 20 0: :3 31 16類型名類型名字節(jié)數(shù)字節(jié)數(shù)取值范圍取值范圍 bool bool1 1 true true、falsefalse char cha
7、r1 1 -128 - 127 -128 - 127 signed char signed char1 1 -128 - 127 -128 - 127 unsigned char unsigned char1 1 0 - 255 0 - 255 int int4 4 -2 -231 31 - 2- 23131-1-1 signed int signed int4 4 -2 -231 31 - 2- 23131-1-1 unsigned int unsigned int4 4 0 - 2 0 - 23232-1-1 signed short int signed short int2 2 -32
8、768 - 32767 -32768 - 32767 unsigned short int unsigned short int2 2 0 - 2 0 - 21616-1-1 signed long int signed long int4 4 -2 -231 31 - 2- 23131-1-1 unsigned long int unsigned long int4 4 0 0 - 2- 23232-1-1 float float4 4 -3.4E(+/-)38 - 3.4E(+/-)38 -3.4E(+/-)38 - 3.4E(+/-)38 double float double floa
9、t8 8 -1.7E(+/-)308 - 1.7E(+/-)308 -1.7E(+/-)308 - 1.7E(+/-)308 long double float long double float1010 -3.4E(+/-)4932 - 3.4E(+/-)4932 -3.4E(+/-)4932 - 3.4E(+/-)4932C+C+中的全部根本類型中的全部根本類型2 21 1: :2 20 0: :3 31 17二二. .運算符與表達(dá)式運算符與表達(dá)式 1. 1.運算符運算符 算術(shù)運算符:算術(shù)運算符:+ - + - * * / % + - / % + - 關(guān)系運算符:關(guān)系運算符: = = =
10、= = != 邏輯運算符:邏輯運算符:& | & | ! 位運算符:位運算符:& | & | 賦值運算符:賦值運算符:= += -= = += -= * *= /= %= = &= |= = /= %= = &= |= = 條件運算符:?:條件運算符:?: 逗號運算符:逗號運算符:, , 指針運算符:指針運算符:& &* * 求字節(jié)運算符:求字節(jié)運算符:sizeofsizeof 函數(shù)調(diào)用運算符、強制類型轉(zhuǎn)換運算符:函數(shù)調(diào)用運算符、強制類型轉(zhuǎn)換運算符: 分量運算符:分量運算符: . - . - 數(shù)組下標(biāo)運算符:數(shù)組下標(biāo)運算符: 作用
11、范圍分解運算符:作用范圍分解運算符:: 動態(tài)內(nèi)存分配符:動態(tài)內(nèi)存分配符:newnew、deletedelete 插入提取運算符:插入提取運算符:2 21 1: :2 20 0: :3 31 18運算符的優(yōu)先級與結(jié)合性運算符的優(yōu)先級與結(jié)合性運算符運算符含義含義要求操作對象數(shù)目要求操作對象數(shù)目結(jié)合性結(jié)合性()(): . -. -括號括號作用范圍分解作用范圍分解( (限定限定) )運算運算符數(shù)組下標(biāo)運算符符數(shù)組下標(biāo)運算符成員運算符成員運算符左左-右右+ - + - & &* *!+ -+ -( )( )sizeofsizeofnew deletenew delete自增自增 自減自減
12、取地址取地址指針引用指針引用邏輯非邏輯非按位取反按位取反正正 負(fù)號負(fù)號強制類型轉(zhuǎn)換強制類型轉(zhuǎn)換求字節(jié)求字節(jié)動態(tài)分配動態(tài)分配 釋放內(nèi)存釋放內(nèi)存1 1右右-左左* * / % / %乘法乘法 除法除法 求余求余2 2左左-右右+ -+ -加法加法 減法減法2 22 21 1: :2 20 0: :3 31 19運算符的優(yōu)先級與結(jié)合性續(xù)表運算符的優(yōu)先級與結(jié)合性續(xù)表運算符運算符含義含義要求操作對象數(shù)目要求操作對象數(shù)目結(jié)合性結(jié)合性左移左移 右移運算符右移運算符2 2左左-右右 = = =小于小于 小于等于小于等于大于大于 大于等于大于等于= != !=等于等于 不等于不等于& & | |
13、按位與按位與按位異或按位異或按位或按位或&邏輯與邏輯與|邏輯或邏輯或?:?:條件運算符條件運算符3 3右右-左左= = += -= += -= * *= /= %= = /= %= = &= = |= &= = |=賦值運算符賦值運算符擴展的賦值運算符擴展的賦值運算符2 2右右-左左,逗號運算符逗號運算符2 2左左-右右2 21 1: :2 20 0: :3 31 110C+C+中的類型轉(zhuǎn)換中的類型轉(zhuǎn)換轉(zhuǎn)換運算符:轉(zhuǎn)換運算符:兩種強制類型轉(zhuǎn)換的方法兩種強制類型轉(zhuǎn)換的方法: :( (目標(biāo)類型名目標(biāo)類型名) )表達(dá)式:表達(dá)式: float x = 2.5; int y; y
14、 = (int)x; float x = 2.5; int y; y = (int)x;目標(biāo)類型名表達(dá)式:目標(biāo)類型名表達(dá)式: float x = 2.5; int y; y = int(x); float x = 2.5; int y; y = int(x);C+C+中的顯式轉(zhuǎn)換中的顯式轉(zhuǎn)換static_caststatic_cast可以不用強制類型轉(zhuǎn)換但一定會發(fā)生轉(zhuǎn)換的地方可以不用強制類型轉(zhuǎn)換但一定會發(fā)生轉(zhuǎn)換的地方( (為為了更清楚、更醒目而使用)了更清楚、更醒目而使用)const_castconst_cast對對constconst和和volatilevolatile進(jìn)行轉(zhuǎn)換進(jìn)行轉(zhuǎn)換rei
15、nterpret_castreinterpret_cast轉(zhuǎn)換為完全不同的意思,必須轉(zhuǎn)換回原來的類型才轉(zhuǎn)換為完全不同的意思,必須轉(zhuǎn)換回原來的類型才能安全的使用,最為危險能安全的使用,最為危險dynamic_castdynamic_cast把基類對象把基類對象( (指針指針) )轉(zhuǎn)換為派生類對象轉(zhuǎn)換為派生類對象( (指針指針) )時使用時使用使用方式使用方式 轉(zhuǎn)換用關(guān)鍵字轉(zhuǎn)換用關(guān)鍵字 (待轉(zhuǎn)換的表達(dá)式待轉(zhuǎn)換的表達(dá)式) )2 21 1: :2 20 0: :3 31 111例:例:static_caststatic_castvoidvoid func(int) func(int) voidvoid
16、 mainmain()()intint i=0 x7fff; long l; float f; i=0 x7fff; long l; float f;l = i; f = i;l = i; f = i; / /更好的方法是使用更好的方法是使用static_caststatic_castl = l = static_caststatic_cast (i);f = (i);f = static_caststatic_cast (i);(i);i = l; i= f;i = l; i= f; / /以上兩條語句會出以上兩條語句會出WarningWarning,可使用如下方式消除,可使用如下方式消除i
17、 = i = static_caststatic_cast (l); i = (l); i = static_caststatic_cast (f);(f);charchar c = c = static_caststatic_cast (i);(i);voidvoid * *vp = &f;vp = &f;floatfloat * *fp = (fp = (floatfloat* *)vp; /C)vp; /C的方法,不好的方法,不好fp = fp = static_caststatic_cast (vp); /(vp); /更好的方法更好的方法doubledouble d
18、= 0.0; d = 0.0;intint x = d; / x = d; /自動發(fā)生隱式類型轉(zhuǎn)換自動發(fā)生隱式類型轉(zhuǎn)換x = (x = (intint)d; /C)d; /C的方法,不好的方法,不好x = x = static_caststatic_cast (d); /(d); /更好的方法更好的方法func(d); /func(d); /自動發(fā)生隱式類型轉(zhuǎn)換自動發(fā)生隱式類型轉(zhuǎn)換func(static_castfunc(static_cast(d); /(d); /更好的方法更好的方法 2 21 1: :2 20 0: :3 31 112例:例:const_castconst_castvoi
19、d main()void main() const int i = 0;const int i = 0;/int /int * *j = &i; /j = &i; /錯誤,不允許這樣賦值錯誤,不允許這樣賦值int int * *k = (intk = (int* *)&i; /)&i; /被摒棄的方法被摒棄的方法k = const_castintk = const_cast(&i);(&i);/long /long * *l = const_castlongl = const_cast(&i); (&i); / /錯誤,不允許同時
20、進(jìn)展錯誤,不允許同時進(jìn)展constconst* *-nonConst-nonConst* * / /和和nonConstnonConst* *-long-long* *兩項轉(zhuǎn)換兩項轉(zhuǎn)換 2 21 1: :2 20 0: :3 31 113例:例:reinterpret_castreinterpret_cast#include#include using namespaceusing namespace stdstd; ;const intconst int sz=100; sz=100;structstruct X X intint asz; asz;voidvoid print( print
21、(X X* * x) x)forfor ( (intint i=0;isz;i+) i=0;isz;i+)cout ai ;cout ai ;cout endl - endl;cout endl - endl; void void mainmain()()X X x; x;printprint(&x);(&x);int int * *xp = xp = reinterpret_castreinterpret_cast (&x);(&x);forfor( (intint * *i=xp;ixp+sz;i+)i=xp;ixp+sz;i+) * *i = 10;i =
22、 10;printprint( (reinterpret_castreinterpret_castX(xp);(xp);printprint(&x);(&x); 2 21 1: :2 20 0: :3 31 1142.2.表達(dá)式表達(dá)式 由運算符連接操作數(shù)構(gòu)成的式子由運算符連接操作數(shù)構(gòu)成的式子 算術(shù)表達(dá)式算術(shù)表達(dá)式 關(guān)系表達(dá)式關(guān)系表達(dá)式 邏輯表達(dá)式邏輯表達(dá)式 賦值表達(dá)式賦值表達(dá)式 條件表達(dá)式條件表達(dá)式 逗號表達(dá)式逗號表達(dá)式2 21 1: :2 20 0: :3 31 1153 3 常量與變量常量與變量一一.C+.C+中的常量中的常量 1. 1.直接常量直接常量( (字面常量字面常
23、量): 10): 10, AA, stringstring . .intint型型 .float .float型型 .char .char型型 . .字符串常量字符串常量 . .boolbool型型:true:true、falsefalse 2. 2.符號常量:符號常量:C+C+中有兩種符號常量中有兩種符號常量 #define#define定義的常量定義的常量 例:例: 關(guān)鍵字關(guān)鍵字constconst定義的常量定義的常量 例:例:const int sz = 100;const int sz = 100; #define#define定義的常量,在預(yù)處理時只是字符串的替換,對定義的常量,在預(yù)
24、處理時只是字符串的替換,對編譯器而言,不帶有任何類型信息,不便于查錯;而編譯器而言,不帶有任何類型信息,不便于查錯;而constconst定義的常量帶有類型信息,故優(yōu)于定義的常量帶有類型信息,故優(yōu)于#define#define定義的定義的常量常量 C+C+推薦使用推薦使用constconst定義的常量定義的常量2 21 1: :2 20 0: :3 31 116 constconst常量常量定義語法定義語法: : const const 類型名類型名 常量名常量名 = = 常量值;常量值;或或 類型名類型名 const const 常量名常量名 = = 常量值;常量值;例:例:const fl
25、oat pi=3.14; const float pi=3.14; float const pi=3.14; float const pi=3.14; const int min=50; const int min=50; int const min=50; int const min=50; const int max=2 const int max=2* *min; min; int const max=2 int const max=2* *min;min; constconst定義的常量,相當(dāng)于定義了一個相應(yīng)類型的變量,定義的常量,相當(dāng)于定義了一個相應(yīng)類型的變量,但其值不能發(fā)生改變但其
26、值不能發(fā)生改變 例:例:const int min = 50;const int min = 50; min = 40; min = 40; /錯誤,不能改變錯誤,不能改變minmin的值的值 所以,定義所以,定義constconst常量的同時必須初始化,且一旦初始化后,常量的同時必須初始化,且一旦初始化后,就不會就不會( (因不能故不會因不能故不會) )再發(fā)生變化。因此在作用范圍內(nèi)假再發(fā)生變化。因此在作用范圍內(nèi)假設(shè)某變量的值不會發(fā)生改變設(shè)某變量的值不會發(fā)生改變, ,那么定義該變量時應(yīng)用那么定義該變量時應(yīng)用constconst進(jìn)展限定進(jìn)展限定, ,以免無意中改變該變量的值以免無意中改變該變量的
27、值 constconst常量是編譯時的常量常量是編譯時的常量 例:例:const int sz = 100;const int sz = 100; int arrsz; int arrsz;2 21 1: :2 20 0: :3 31 117 constconst與指針與指針1.1.指向常量的指針:指向常量的指針:限定指針?biāo)傅膶ο?、變量限定指針?biāo)傅膶ο?、變?定義形式:定義形式: const const 類型類型 * * 指針變量指針變量=地址表達(dá)式地址表達(dá)式 ; 或或 類型類型 const const * * 指針變量指針變量=地址表達(dá)式地址表達(dá)式 ;例:例:int var = 35;i
28、nt var = 35; const int max = 100; const int max = 100; int int * *p;p; const int const int * *p1_const;p1_const; const int const int * *p2_const;p2_const; p1_const = &var; p1_const = &var; p2_const = &max; p2_const = &max; var=40; var=40; * *p1_const = 100;p1_const = 100; * *p2_const
29、 = 200;p2_const = 200; max = 200; max = 200; p = &max; p = &max;p1_constp1_const和和p2_constp2_const,varvar不是常不是常量量* *p1_constp1_const和和* *p2_constp2_const、maxmax是常量是常量2 21 1: :2 20 0: :3 31 118 指向常量的指針指向常量的指針const int *p1_constconst int *p2_constconst int maxint varp1_constp1_const不是常量,不是常量,p
30、1_constp1_const指向的變量的值指向的變量的值不不能能通過通過 * *p1_const p1_const 改變,但改變,但p1_constp1_const指向的變指向的變量即量即varvar本身不是常量,是本身不是常量,是可以可以改變的,故改變的,故 * *p1_const=100;p1_const=100; var=40; var=40;p2_constp2_const不是常量,不是常量,p2_constp2_const指向的變量的值指向的變量的值不不能能通過通過 * *p2_const p2_const 改變,且改變,且p2_constp2_const指向的變指向的變量即量即m
31、axmax本身是常量,其值不能改變,故本身是常量,其值不能改變,故 * *p2_const=200;p2_const=200; max=200; max=200;2 21 1: :2 20 0: :3 31 1192.2.指針常量:指針常量:指針變量本身的值初始化后不能再改變指針變量本身的值初始化后不能再改變 定義方式:定義方式: 類型類型 * * const const 指針變量指針變量 = = 地址表達(dá)式;地址表達(dá)式;例例:int var1 = 100,var2 = 200;:int var1 = 100,var2 = 200; const int max = 1000; const in
32、t max = 1000; int int * * const cst_p1 = &var1; const cst_p1 = &var1; int int * * const cst_p2 = &max; const cst_p2 = &max; * *cst_p1 = var2;cst_p1 = var2; cst_p1 = &var2; cst_p1 = &var2; 只說明了指針變量如只說明了指針變量如cst_p1cst_p1本身是常量,但并沒有說不能本身是常量,但并沒有說不能改變改變* *cst_p1cst_p1的值的值必須要賦初值必須要
33、賦初值2 21 1: :2 20 0: :3 31 1203.3.指向常量的指針常量指向常量的指針常量 指針變量本身和所指對象的值都為常量,不能改變指針變量本身和所指對象的值都為常量,不能改變 定義方式:定義方式: const const 類型類型 * * const const 指針變量指針變量 = = 地址表達(dá)式;地址表達(dá)式; 或或 類型類型 const const * * const const 指針變量指針變量 = = 地址表達(dá)式;地址表達(dá)式; 例:例:int var1 = 128,var2 = 256;int var1 = 128,var2 = 256; const int max
34、= 1000; const int max = 1000; const int const int * *const doubleCst_p1 = &var1;const doubleCst_p1 = &var1; const int const int * *const doubleCst_p2 = &max;const doubleCst_p2 = &max; doubleCst_p1 = &var2; doubleCst_p1 = &var2; * *doubleCst_p1 = 500;doubleCst_p1 = 500; var1 =
35、 max-var2; var1 = max-var2; 2 21 1: :2 20 0: :3 31 121二二.C+.C+中的變量中的變量變量必須先定義變量必須先定義( (聲明聲明) )再使用再使用變量的定義變量的定義 存儲類型存儲類型 數(shù)據(jù)類型名數(shù)據(jù)類型名 變量名列表;變量名列表; C+C+中中幾乎幾乎 隨處可以定義變量隨處可以定義變量 例:例: for(for(int iint i=0;i100;i+)=0;i100;i+) if(i 100) if(i 100) int x int x = 0;= 0; x += 100; x += 100; int y int y = 10;= 10
36、; 變量的分類:根據(jù)定義變量的位置,分為兩類:變量的分類:根據(jù)定義變量的位置,分為兩類:全局變量外部變量全局變量外部變量局部變量內(nèi)部變量局部變量內(nèi)部變量2 21 1: :2 20 0: :3 31 122 變量的存儲類型變量的存儲類型 存儲方式:動態(tài)存儲方式和靜態(tài)存儲方式存儲方式:動態(tài)存儲方式和靜態(tài)存儲方式 靜態(tài)存儲方式:程序運行過程中給此類變量分配固定靜態(tài)存儲方式:程序運行過程中給此類變量分配固定的存儲空間的存儲空間 動態(tài)存儲方式:程序運行過程中根據(jù)需要,給此類變動態(tài)存儲方式:程序運行過程中根據(jù)需要,給此類變量動態(tài)分配存儲空間量動態(tài)分配存儲空間程序代碼區(qū)程序代碼區(qū)靜態(tài)存儲區(qū)靜態(tài)存儲區(qū)動態(tài)存儲
37、區(qū)動態(tài)存儲區(qū)程序的存儲組織程序的存儲組織2 21 1: :2 20 0: :3 31 123 變量的存儲類型變量的存儲類型autoauto、registerregister、staticstatic、externextern和默認(rèn)五種和默認(rèn)五種autoauto:自動類型:自動類型 普通的局部變量都屬于此類普通的局部變量都屬于此類, ,分配在動態(tài)存儲區(qū)中分配在動態(tài)存儲區(qū)中registerregister:存放器類型:存放器類型staticstatic:靜態(tài)變量:靜態(tài)變量靜態(tài)局部變量:在靜態(tài)區(qū)中,只初始化一次靜態(tài)局部變量:在靜態(tài)區(qū)中,只初始化一次, ,屢次調(diào)用函屢次調(diào)用函數(shù)時能保存前一次函數(shù)調(diào)用完
38、畢時的值,延長了該變量的數(shù)時能保存前一次函數(shù)調(diào)用完畢時的值,延長了該變量的生存期生存期靜態(tài)全局變量:在靜態(tài)區(qū)中,限制了該變量的作用域靜態(tài)全局變量:在靜態(tài)區(qū)中,限制了該變量的作用域externextern:外部變量:外部變量定義全局變量定義全局變量聲明外部變量:擴展了全局變量的作用域聲明外部變量:擴展了全局變量的作用域2 21 1: :2 20 0: :3 31 124例:例:staticstatic#include#include using namespaceusing namespace std; std;intint factor(int n) factor(int n) static
39、int static int result = 1; result = 1; result result * *= n;= n; return result; return result; voidvoid main() main() for( for(intint i=1;i=8;i+) i=1;i=8;i+)cout factor(i) ;cout factor(i) ; cout endl; cout endl; 2 21 1: :2 20 0: :3 31 125例:例:externextern#include #include using namespace std;using na
40、mespace std;extern int nTestVar;extern int nTestVar;void main()void main() nTestVar = 100; nTestVar = 100; cout nTestVar endl; cout nTestVar 變量變量 向流中添加數(shù)據(jù)的操作稱為插入操作向流中添加數(shù)據(jù)的操作稱為插入操作: : 流對象流對象數(shù)據(jù)數(shù)據(jù) : : :提取運算符提取運算符cincin和和coutcout是是C+C+預(yù)定義的流對象預(yù)定義的流對象 cout: cout:用于進(jìn)展輸出操作用于進(jìn)展輸出操作, ,與顯示器相關(guān)聯(lián)與顯示器相關(guān)聯(lián) cin: cin:用
41、于進(jìn)展輸入操作用于進(jìn)展輸入操作, ,與鍵盤相關(guān)聯(lián)與鍵盤相關(guān)聯(lián)2 21 1: :2 20 0: :3 31 129 用法用法: cout: cout表達(dá)式表達(dá)式11表達(dá)式表達(dá)式2 2 cin變量變量11變量變量22變量變量n;n; 可以串聯(lián)多個可以串聯(lián)多個 ,同樣也可以串聯(lián)多同樣也可以串聯(lián)多個個給多個變量輸入數(shù)據(jù)給多個變量輸入數(shù)據(jù) 輸入時多個數(shù)據(jù)項之間用空格、輸入時多個數(shù)據(jù)項之間用空格、TabTab或回車分隔或回車分隔 具有智能,能夠自動判斷其后的數(shù)據(jù)項的類型,具有智能,能夠自動判斷其后的數(shù)據(jù)項的類型,并采用相應(yīng)的類型進(jìn)展輸出或輸入并采用相應(yīng)的類型進(jìn)展輸出或輸入 使用流對象時使用流對象時, ,必
42、須必須#include#include相應(yīng)的頭文件相應(yīng)的頭文件( (如如iostream)iostream)并使用語句并使用語句“using namespace std;“using namespace std;翻開名稱空間翻開名稱空間stdstdcincin與與coutcout在在iostreamiostream中的中的stdstd名稱空間中定義名稱空間中定義2 21 1: :2 20 0: :3 31 130二二. .簡單的輸入簡單的輸入/ /輸出格式控制:使用操縱符輸出格式控制:使用操縱符(manipulator)(manipulator) I/OI/O流類庫中提供了假設(shè)干個操縱符,可以
43、直接嵌入到輸流類庫中提供了假設(shè)干個操縱符,可以直接嵌入到輸入入/ /輸出語句中實現(xiàn)輸出語句中實現(xiàn)I/OI/O格式控制格式控制操縱符操縱符功能功能endlendl輸出一個換行符,并刷新流輸出一個換行符,并刷新流decdec用十進(jìn)制輸入或輸出數(shù)值用十進(jìn)制輸入或輸出數(shù)值octoct用八進(jìn)制輸入或輸出數(shù)值用八進(jìn)制輸入或輸出數(shù)值hexhex用十六進(jìn)制輸入或輸出數(shù)值用十六進(jìn)制輸入或輸出數(shù)值endsends輸出一個空格符,并刷新流輸出一個空格符,并刷新流setw(int n)setw(int n)設(shè)置其后一個數(shù)據(jù)項占據(jù)的寬度設(shè)置其后一個數(shù)據(jù)項占據(jù)的寬度setfill(char c)setfill(char
44、c)設(shè)置數(shù)據(jù)項寬度不足時的填充字符設(shè)置數(shù)據(jù)項寬度不足時的填充字符setprecision(int n)setprecision(int n) 設(shè)置浮點數(shù)輸出小數(shù)位數(shù)設(shè)置浮點數(shù)輸出小數(shù)位數(shù) 常用的常用的I/OI/O操縱符操縱符2 21 1: :2 20 0: :3 31 131說明:說明: 不帶參數(shù)的不帶參數(shù)的I/OI/O操縱符定義在操縱符定義在iostreamiostream中中 使用帶參數(shù)的使用帶參數(shù)的I/OI/O操縱符,需包含操縱符,需包含iomanipiomanip setw()setw()只對其后緊跟著的一個真正的數(shù)據(jù)項起作用只對其后緊跟著的一個真正的數(shù)據(jù)項起作用例:例:coutAen
45、dsBendl;coutAendsBendl; couthex255ends32endl; couthex255ends32endl; coutdecsetw(5)setfill(0)32endl; coutdecsetw(5)setfill(0)32endl; coutsetw(5)setprecision(4)7.5612endl; coutsetw(5)setprecision(4)7.5612endl;屏幕輸出屏幕輸出2 21 1: :2 20 0: :3 31 1325 5 根本控制構(gòu)造根本控制構(gòu)造 順序、選擇順序、選擇( (分支分支) )和循環(huán)構(gòu)造和循環(huán)構(gòu)造 對應(yīng)的控制語句對應(yīng)的控
46、制語句控制語句控制語句無條件控制語句無條件控制語句條件控制語句條件控制語句分支語句分支語句循環(huán)語句循環(huán)語句ifif語句語句switchswitch語句語句switchswitch語句語句forfor語句語句whilewhile語句語句do-whiledo-while語句語句breakbreak語句語句continuecontinue語句語句returnreturn語句語句gotogoto語句語句2 21 1: :2 20 0: :3 31 1336 6 數(shù)組、構(gòu)造體、共用體和枚舉類型數(shù)組、構(gòu)造體、共用體和枚舉類型一一. .數(shù)組:需要處理一樣類型的一批相關(guān)數(shù)據(jù)時使用數(shù)組:需要處理一樣類型的一批相
47、關(guān)數(shù)據(jù)時使用數(shù)組分為一維數(shù)組與多維數(shù)組數(shù)組分為一維數(shù)組與多維數(shù)組 定義:定義: 一維數(shù)組:類型一維數(shù)組:類型 數(shù)組變量名數(shù)組變量名 數(shù)組長度數(shù)組長度 ; 二維數(shù)組:類型二維數(shù)組:類型 數(shù)組變量名數(shù)組變量名 第一維長度第一維長度第二維長度第二維長度; 例:例: int nArr10;int nArr10; int nArr2d105; int nArr2d105;說明:說明:數(shù)組長度必須是常量表達(dá)式:編譯時求值數(shù)組長度必須是常量表達(dá)式:編譯時求值C C意義上的字符串采用字符數(shù)組作為其存儲形式,在最后添意義上的字符串采用字符數(shù)組作為其存儲形式,在最后添加一個加一個ASCIIASCII碼為碼為0 0
48、的字符作為字符串的完畢標(biāo)志的字符作為字符串的完畢標(biāo)志2 21 1: :2 20 0: :3 31 134stringstring類:字符串類類:字符串類stringstring類封裝了字符串的根本特性和對字符串的典型操作類封裝了字符串的根本特性和對字符串的典型操作, ,其對象可用于保存幾乎任意長的字符串,對處理輸入文件其對象可用于保存幾乎任意長的字符串,對處理輸入文件中一行上字符數(shù)不定的情況特別有用中一行上字符數(shù)不定的情況特別有用stringstring類是類是STLSTL中的類,使用時需要包含頭文件中的類,使用時需要包含頭文件stringstring并并翻開名稱空間翻開名稱空間stdstds
49、tringstring類的操作:成員函數(shù)類的操作:成員函數(shù)求串長:求串長:size()size()、length()length()例:例:#include #include #include #include using namespace std;using namespace std;void PrintAttribute(const string &str)void PrintAttribute(const string &str)cout size: cout size: str.size() str.size() endl; endl;cout length: co
50、ut length: str.length()str.length() endl; endl; 2 21 1: :2 20 0: :3 31 135int main()int main()string s1,s2;string s1,s2;PrintAttribute(s1);PrintAttribute(s1); s1 = My string object; PrintAttribute(s1); s1 = My string object; PrintAttribute(s1);s2 = Another String Object; PrintAttribute(s2);s2 = Anot
51、her String Object; PrintAttribute(s2);return 0;return 0; 2 21 1: :2 20 0: :3 31 136賦值:賦值:assign() =assign() = s1.assign(s2); s1.assign(s2); s1 = s2; s1 = s2;連接:連接:append += +append += + s1.append(s2); s1.append(s2); s1+=s2; s1+=s2; s1=s1+s2; s1=s1+s2;下標(biāo):下標(biāo): s10s10#include #include #include #include
52、using namespace std;using namespace std;int main()int main() string s1 = cat ,s2,s3; string s1 = cat ,s2,s3; s2 = s1; s3.assign(jump );s2 = s1; s3.assign(jump ); cout s2 s3 endl; cout s2 s3 endl; s1 += s3;s1 += s3; cout s1 endl; cout s1 endl; s1.append(and yell);s1.append(and yell); cout s1 endl; co
53、ut s1 endl; s10 = h;s10 = h; cout s1 endl; cout s1 endl; return 0; return 0; 2 21 1: :2 20 0: :3 31 137比較比較stringstring s1 pare(s2); s1 pare(s2);比較字符串比較字符串s1s1與與s2s2,當(dāng),當(dāng)s1s1等于等于s2s2時,返回時,返回0 0;當(dāng);當(dāng)s1s1大于大于s2s2時時返回正值,否那么返回負(fù)值返回正值,否那么返回負(fù)值字符串的局部比較字符串的局部比較 s1 pare(beg1,len1,s2,beg2,len2); s1 pare(beg1,len
54、1,s2,beg2,len2); beg1 beg1和和len1len1指示指示s1s1參與比較的開場字符的下標(biāo)與長度,參與比較的開場字符的下標(biāo)與長度,beg2beg2和和len2len2指示指示s2s2參與比較的開場字符的下標(biāo)與長度參與比較的開場字符的下標(biāo)與長度運算符:運算符:!= =!= =2 21 1: :2 20 0: :3 31 138例:例:stringstring的比較:的比較: 字符串的排序字符串的排序#include #include #include #include using namespace std;using namespace std;int main()int
55、 main() string names = Li Hua,He XiaoMing,Zhang Li, string names = Li Hua,He XiaoMing,Zhang Li, Sun Fei,Chen Bao; Sun Fei,Chen Bao; string s; string s; int i,j,k,nmb; int i,j,k,nmb; nmb = nmb = sizeof(names)/sizeof(names0)sizeof(names)/sizeof(names0); ; for(i=0;inmb-1;i+) for(i=0;inmb-1;i+) k = i; k
56、 = i; for (j=i+1;jnmb;j+)if( for (j=i+1;jnamesjnamesknamesj) k = j;) k = j; if(k!=i) if(k!=i) s = namesk; namesk = namesi; namesi = s; s = namesk; namesk = namesi; namesi = s; for(i=0;inmb;i+) for(i=0;inmb;i+)cout name i = namesi endl;cout name i = namesi endl;return 0;return 0; 2 21 1: :2 20 0: :3
57、31 139子串:子串:substr()substr() s.substr(beg,len); s.substr(beg,len); beg beg指定子串的開場下標(biāo),指定子串的開場下標(biāo),lenlen指定讀取的字符數(shù)指定讀取的字符數(shù) string s = C+ program design string s = C+ program design; cout s.substr(4,7) endl;cout s.substr(4,7) endl; 查找:查找:find()find() s.find(substring);s.find(substring); s.find(substring,be
58、ginning); s.find(substring,beginning); 替換:替換:replace()replace() s.replace(beg,num,str); s.replace(beg,num,str);2 21 1: :2 20 0: :3 31 140例:把字母表中的逗號例:把字母表中的逗號“,全部替換為分號全部替換為分號“;#include #include #include #include using namespace std;using namespace std;int main()int main() string alphabet = A,B,C,D,E,
59、F,G,H,I,J,K,L,M, string alphabet = A,B,C,D,E,F,G,H,I,J,K,L,M, N,O,P,Q,R,S,T,U,V,W,X,Y,Z; N,O,P,Q,R,S,T,U,V,W,X,Y,Z;int x = alphabet.find(,);int x = alphabet.find(,);while(x = 0)while(x = 0) alphabet.replace(x,1,;);alphabet.replace(x,1,;); x = alphabet.find(,x+1); x = alphabet.find(,x+1); cout alphab
60、et endl;cout alphabet endl;return 0;return 0; 2 21 1: :2 20 0: :3 31 141插入:插入:insert()insert() s1.insert(n,s2); s1.insert(n,s2); 例:例:string s1 = cat jump;string s1 = cat jump; string s2 = dog ; string s2 = dog ; s1.insert(4,s2); s1.insert(4,s2); s1.insert(4,and ); s1.insert(4,and ); cout s1 endl; cout s1 endl;2 21 1: :2 20 0: :3 31 142轉(zhuǎn)換成轉(zhuǎn)換成C C語言式的語言式的charchar* *型字符串:型字符串:data() c_str() copy()data() c_str() copy() char char * * ptr= ptr=s.data(); /char s.data(); /char * * ptr=s.c_str();
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度電氣設(shè)備安裝與維修合同
- 總經(jīng)理聘請合同模板
- 房地產(chǎn)代理合同范文:委托與代理
- 代理合同:房地產(chǎn)估價委托協(xié)議書
- 廣告業(yè)務(wù)經(jīng)營權(quán)轉(zhuǎn)讓合同
- 產(chǎn)品責(zé)任保險合同專業(yè)版解析
- 自動化機器租賃協(xié)議
- 2024裝修工程轉(zhuǎn)包合同范本
- 年度長期合作協(xié)議范例
- 全面購銷合同模板珍藏
- 君子自強不息課件
- 2022人教版高二英語新教材選擇性必修全四冊課文原文及翻譯(英漢對照)
- WDZANYJY23低壓電力電纜技術(shù)規(guī)格書
- 抗高血壓藥物基因檢測課件
- 醫(yī)院管理醫(yī)院應(yīng)急調(diào)配機制
- (公開課)文言文斷句-完整版課件
- 小學(xué)生性教育調(diào)查問卷
- 醫(yī)院感染管理質(zhì)量持續(xù)改進(jìn)反饋表
- 旅游行政管理第二章旅游行政管理體制課件
- 學(xué)生崗位實習(xí)家長(或法定監(jiān)護人)知情同意書
- 衛(wèi)生院關(guān)于召開基本公共衛(wèi)生服務(wù)項目培訓(xùn)會的通知
評論
0/150
提交評論