




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2 21 1: :2 20 0: :3 31 121 C+1 C+語(yǔ)言的字符集與詞匯語(yǔ)言的字符集與詞匯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)特殊符號(hào)特殊符號(hào) 空格空格 ! # $ % & . ! # $ % & . * * + + ,- - ? / : ; / : ; _ | _ | 2 21 1: :2 20 0: :3 31 132.2.詞匯:五類(lèi)詞匯:五類(lèi) (1) (1
2、)關(guān)鍵字關(guān)鍵字( (保存字保存字):):系統(tǒng)預(yù)定義且有專(zhuān)門(mén)含義的單詞系統(tǒng)預(yù)定義且有專(zhuān)門(mén)含義的單詞, ,不允不允許另作它用許另作它用 .C+ .C+的關(guān)鍵字包含了的關(guān)鍵字包含了C C語(yǔ)言的幾乎所有關(guān)鍵字語(yǔ)言的幾乎所有關(guān)鍵字 .C+ .C+的關(guān)鍵字隨的關(guān)鍵字隨C+C+的開(kāi)展而不斷增加的開(kāi)展而不斷增加 (2) (2)標(biāo)識(shí)符:由程序員為程序中的各種成份定義的名字標(biāo)識(shí)符:由程序員為程序中的各種成份定義的名字 . .以字母或以字母或_ _開(kāi)頭開(kāi)頭, ,由字母、由字母、_ _、數(shù)字組成、數(shù)字組成 . .不能是關(guān)鍵字不能是關(guān)鍵字 .C+ .C+中的標(biāo)識(shí)符區(qū)分大小寫(xiě)中的標(biāo)識(shí)符區(qū)分大小寫(xiě) . .見(jiàn)名知義的原那么見(jiàn)
3、名知義的原那么 .C+ .C+系統(tǒng)對(duì)標(biāo)識(shí)符的長(zhǎng)度有一定限制系統(tǒng)對(duì)標(biāo)識(shí)符的長(zhǎng)度有一定限制 (3) (3)直接常量直接常量 (4) (4)運(yùn)算符運(yùn)算符 (5) (5)分隔符:用來(lái)分隔不同的語(yǔ)法成份的單詞分隔符:用來(lái)分隔不同的語(yǔ)法成份的單詞 空格空格 ; # ; # / /* * * */ / /* * *C+C+的兩種注釋的兩種注釋: : ./ ./* * */ ./ / ./ 注釋到行尾注釋到行尾2 21 1: :2 20 0: :3 31 142 2 根本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式根本數(shù)據(jù)類(lèi)型、運(yùn)算符與表達(dá)式每一項(xiàng)數(shù)據(jù)都唯一的屬于某種類(lèi)型每一項(xiàng)數(shù)據(jù)都唯一的屬于某種類(lèi)型每一數(shù)據(jù)類(lèi)型都有一個(gè)明確定義
4、的值的集合每一數(shù)據(jù)類(lèi)型都有一個(gè)明確定義的值的集合每一類(lèi)型的數(shù)據(jù)占用一樣大小的存儲(chǔ)空間每一類(lèi)型的數(shù)據(jù)占用一樣大小的存儲(chǔ)空間同一類(lèi)型的數(shù)據(jù)可以進(jìn)展一樣類(lèi)型的運(yùn)算同一類(lèi)型的數(shù)據(jù)可以進(jìn)展一樣類(lèi)型的運(yùn)算數(shù)據(jù)類(lèi)型數(shù)據(jù)類(lèi)型簡(jiǎn)單類(lèi)型簡(jiǎn)單類(lèi)型復(fù)合類(lèi)型復(fù)合類(lèi)型指針類(lèi)型指針類(lèi)型 * 用戶(hù)定義類(lèi)型用戶(hù)定義類(lèi)型 enum 基本類(lèi)型基本類(lèi)型整型整型 int浮點(diǎn)型浮點(diǎn)型 float字符型字符型 char空類(lèi)型空類(lèi)型 void布爾型布爾型 bool數(shù)組數(shù)組 結(jié)構(gòu)體結(jié)構(gòu)體 struct共用體共用體 union類(lèi)類(lèi) class1.C+1.C+的數(shù)據(jù)類(lèi)型的數(shù)據(jù)類(lèi)型根本類(lèi)型是由系統(tǒng)定義根本類(lèi)型是由系統(tǒng)定義, ,各種語(yǔ)言都具備的類(lèi)型各
5、種語(yǔ)言都具備的類(lèi)型復(fù)合類(lèi)型與指針類(lèi)型都復(fù)合類(lèi)型與指針類(lèi)型都屬于用戶(hù)定義類(lèi)型屬于用戶(hù)定義類(lèi)型2 21 1: :2 20 0: :3 31 15 intint型:整型型:整型 VCVC中占中占4 4字節(jié)字節(jié) floatfloat型型: : 浮點(diǎn)型浮點(diǎn)型 4 4字節(jié)字節(jié) charchar型型: : 字符型字符型 1 1字節(jié)字節(jié) voidvoid型型: : 空類(lèi)型空類(lèi)型 boolbool型型: : 布爾型布爾型 1 1字節(jié)字節(jié) 值為值為 true true 或或 falsefalse* * *修飾說(shuō)明符修飾說(shuō)明符longlong與與shortshort、signedsigned與與unsignedun
6、signedlonglong和和shortshort修改整型具有的最大值和最小值修改整型具有的最大值和最小值signedsigned和和unsignedunsigned告訴編譯器如何處理整型和字符型數(shù)告訴編譯器如何處理整型和字符型數(shù)據(jù)的最高位據(jù)的最高位 floatfloat型可用型可用doubledouble和和longlong doubledouble修飾,修改實(shí)型數(shù)據(jù)修飾,修改實(shí)型數(shù)據(jù)的表數(shù)范圍和精度的表數(shù)范圍和精度2 21 1: :2 20 0: :3 31 16類(lèi)型名類(lèi)型名字節(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+中的全部根本類(lèi)型中的全部根本類(lèi)型2 21 1: :2 20 0: :3 31 17二二. .運(yùn)算符與表達(dá)式運(yùn)算符與表達(dá)式 1. 1.運(yùn)算符運(yùn)算符 算術(shù)運(yùn)算符:算術(shù)運(yùn)算符:+ - + - * * / % + - / % + - 關(guān)系運(yùn)算符:關(guān)系運(yùn)算符: = = =
10、= = != 邏輯運(yùn)算符:邏輯運(yùn)算符:& | & | ! 位運(yùn)算符:位運(yùn)算符:& | & | 賦值運(yùn)算符:賦值運(yùn)算符:= += -= = += -= * *= /= %= = &= |= = /= %= = &= |= = 條件運(yùn)算符:?:條件運(yùn)算符:?: 逗號(hào)運(yùn)算符:逗號(hào)運(yùn)算符:, , 指針運(yùn)算符:指針運(yùn)算符:& &* * 求字節(jié)運(yùn)算符:求字節(jié)運(yùn)算符:sizeofsizeof 函數(shù)調(diào)用運(yùn)算符、強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符:函數(shù)調(diào)用運(yùn)算符、強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符: 分量運(yùn)算符:分量運(yùn)算符: . - . - 數(shù)組下標(biāo)運(yùn)算符:數(shù)組下標(biāo)運(yùn)算符: 作用
11、范圍分解運(yùn)算符:作用范圍分解運(yùn)算符:: 動(dòng)態(tài)內(nèi)存分配符:動(dòng)態(tài)內(nèi)存分配符:newnew、deletedelete 插入提取運(yùn)算符:插入提取運(yùn)算符:2 21 1: :2 20 0: :3 31 18運(yùn)算符的優(yōu)先級(jí)與結(jié)合性運(yùn)算符的優(yōu)先級(jí)與結(jié)合性運(yùn)算符運(yùn)算符含義含義要求操作對(duì)象數(shù)目要求操作對(duì)象數(shù)目結(jié)合性結(jié)合性()(): . -. -括號(hào)括號(hào)作用范圍分解作用范圍分解( (限定限定) )運(yùn)算運(yùn)算符數(shù)組下標(biāo)運(yùn)算符符數(shù)組下標(biāo)運(yùn)算符成員運(yùn)算符成員運(yùn)算符左左-右右+ - + - & &* *!+ -+ -( )( )sizeofsizeofnew deletenew delete自增自增 自減自減
12、取地址取地址指針引用指針引用邏輯非邏輯非按位取反按位取反正正 負(fù)號(hào)負(fù)號(hào)強(qiáng)制類(lèi)型轉(zhuǎn)換強(qiáng)制類(lèi)型轉(zhuǎn)換求字節(jié)求字節(jié)動(dòng)態(tài)分配動(dòng)態(tài)分配 釋放內(nèi)存釋放內(nèi)存1 1右右-左左* * / % / %乘法乘法 除法除法 求余求余2 2左左-右右+ -+ -加法加法 減法減法2 22 21 1: :2 20 0: :3 31 19運(yùn)算符的優(yōu)先級(jí)與結(jié)合性續(xù)表運(yùn)算符的優(yōu)先級(jí)與結(jié)合性續(xù)表運(yùn)算符運(yùn)算符含義含義要求操作對(duì)象數(shù)目要求操作對(duì)象數(shù)目結(jié)合性結(jié)合性左移左移 右移運(yùn)算符右移運(yùn)算符2 2左左-右右 = = =小于小于 小于等于小于等于大于大于 大于等于大于等于= != !=等于等于 不等于不等于& & | |
13、按位與按位與按位異或按位異或按位或按位或&邏輯與邏輯與|邏輯或邏輯或?:?:條件運(yùn)算符條件運(yùn)算符3 3右右-左左= = += -= += -= * *= /= %= = /= %= = &= = |= &= = |=賦值運(yùn)算符賦值運(yùn)算符擴(kuò)展的賦值運(yùn)算符擴(kuò)展的賦值運(yùn)算符2 2右右-左左,逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符2 2左左-右右2 21 1: :2 20 0: :3 31 110C+C+中的類(lèi)型轉(zhuǎn)換中的類(lèi)型轉(zhuǎn)換轉(zhuǎn)換運(yùn)算符:轉(zhuǎn)換運(yùn)算符:兩種強(qiáng)制類(lèi)型轉(zhuǎn)換的方法兩種強(qiáng)制類(lèi)型轉(zhuǎn)換的方法: :( (目標(biāo)類(lèi)型名目標(biāo)類(lèi)型名) )表達(dá)式:表達(dá)式: float x = 2.5; int y; y
14、 = (int)x; float x = 2.5; int y; y = (int)x;目標(biāo)類(lèi)型名表達(dá)式:目標(biāo)類(lèi)型名表達(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可以不用強(qiáng)制類(lèi)型轉(zhuǎn)換但一定會(huì)發(fā)生轉(zhuǎn)換的地方可以不用強(qiáng)制類(lèi)型轉(zhuǎn)換但一定會(huì)發(fā)生轉(zhuǎn)換的地方( (為為了更清楚、更醒目而使用)了更清楚、更醒目而使用)const_castconst_cast對(duì)對(duì)constconst和和volatilevolatile進(jìn)行轉(zhuǎn)換進(jìn)行轉(zhuǎn)換rei
15、nterpret_castreinterpret_cast轉(zhuǎn)換為完全不同的意思,必須轉(zhuǎn)換回原來(lái)的類(lèi)型才轉(zhuǎn)換為完全不同的意思,必須轉(zhuǎn)換回原來(lái)的類(lèi)型才能安全的使用,最為危險(xiǎn)能安全的使用,最為危險(xiǎn)dynamic_castdynamic_cast把基類(lèi)對(duì)象把基類(lèi)對(duì)象( (指針指針) )轉(zhuǎn)換為派生類(lèi)對(duì)象轉(zhuǎn)換為派生類(lèi)對(duì)象( (指針指針) )時(shí)使用時(shí)使用使用方式使用方式 轉(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; / /以上兩條語(yǔ)句會(huì)出以上兩條語(yǔ)句會(huì)出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; /自動(dòng)發(fā)生隱式類(lèi)型轉(zhuǎn)換自動(dòng)發(fā)生隱式類(lèi)型轉(zhuǎn)換x = (x = (intint)d; /C)d; /C的方法,不好的方法,不好x = x = static_caststatic_cast (d); /(d); /更好的方法更好的方法func(d); /func(d); /自動(dòng)發(fā)生隱式類(lèi)型轉(zhuǎn)換自動(dòng)發(fā)生隱式類(lèi)型轉(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; /錯(cuò)誤,不允許這樣賦值錯(cuò)誤,不允許這樣賦值int int * *k = (intk = (int* *)&i; /)&i; /被摒棄的方法被摒棄的方法k = const_castintk = const_cast(&i);(&i);/long /long * *l = const_castlongl = const_cast(&i); (&i); / /錯(cuò)誤,不允許同時(shí)
20、進(jìn)展錯(cuò)誤,不允許同時(shí)進(jìn)展constconst* *-nonConst-nonConst* * / /和和nonConstnonConst* *-long-long* *兩項(xiàng)轉(zhuǎn)換兩項(xiàng)轉(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á)式 由運(yùn)算符連接操作數(shù)構(gòu)成的式子由運(yùn)算符連接操作數(shù)構(gòu)成的式子 算術(shù)表達(dá)式算術(shù)表達(dá)式 關(guān)系表達(dá)式關(guān)系表達(dá)式 邏輯表達(dá)式邏輯表達(dá)式 賦值表達(dá)式賦值表達(dá)式 條件表達(dá)式條件表達(dá)式 逗號(hào)表達(dá)式逗號(hào)表達(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.符號(hào)常量:符號(hào)常量:C+C+中有兩種符號(hào)常量中有兩種符號(hào)常量 #define#define定義的常量定義的常量 例:例: 關(guān)鍵字關(guān)鍵字constconst定義的常量定義的常量 例:例:const int sz = 100;const int sz = 100; #define#define定義的常量,在預(yù)處理時(shí)只是字符串的替換,對(duì)定義的常量,在預(yù)
24、處理時(shí)只是字符串的替換,對(duì)編譯器而言,不帶有任何類(lèi)型信息,不便于查錯(cuò);而編譯器而言,不帶有任何類(lèi)型信息,不便于查錯(cuò);而constconst定義的常量帶有類(lèi)型信息,故優(yōu)于定義的常量帶有類(lèi)型信息,故優(yōu)于#define#define定義的定義的常量常量 C+C+推薦使用推薦使用constconst定義的常量定義的常量2 21 1: :2 20 0: :3 31 116 constconst常量常量定義語(yǔ)法定義語(yǔ)法: : const const 類(lèi)型名類(lèi)型名 常量名常量名 = = 常量值;常量值;或或 類(lèi)型名類(lèi)型名 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)于定義了一個(gè)相應(yīng)類(lèi)型的變量,定義的常量,相當(dāng)于定義了一個(gè)相應(yīng)類(lèi)型的變量,但其值不能發(fā)生改變但其
26、值不能發(fā)生改變 例:例:const int min = 50;const int min = 50; min = 40; min = 40; /錯(cuò)誤,不能改變錯(cuò)誤,不能改變minmin的值的值 所以,定義所以,定義constconst常量的同時(shí)必須初始化,且一旦初始化后,常量的同時(shí)必須初始化,且一旦初始化后,就不會(huì)就不會(huì)( (因不能故不會(huì)因不能故不會(huì)) )再發(fā)生變化。因此在作用范圍內(nèi)假再發(fā)生變化。因此在作用范圍內(nèi)假設(shè)某變量的值不會(huì)發(fā)生改變?cè)O(shè)某變量的值不會(huì)發(fā)生改變, ,那么定義該變量時(shí)應(yīng)用那么定義該變量時(shí)應(yīng)用constconst進(jìn)展限定進(jìn)展限定, ,以免無(wú)意中改變?cè)撟兞康闹狄悦鉄o(wú)意中改變?cè)撟兞康?/p>
27、值 constconst常量是編譯時(shí)的常量常量是編譯時(shí)的常量 例:例: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)傅膶?duì)象、變量限定指針?biāo)傅膶?duì)象、變量 定義形式:定義形式: const const 類(lèi)型類(lèi)型 * * 指針變量指針變量=地址表達(dá)式地址表達(dá)式 ; 或或 類(lèi)型類(lèi)型 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指向的變量的值指向的變量的值不不能能通過(guò)通過(guò) * *p1_const p1_const 改變,但改變,但p1_constp1_const指向的變指向的變量即量即varvar本身不是常量,是本身不是常量,是可以可以改變的,故改變的,故 * *p1_const=100;p1_const=100; var=40; var=40;p2_constp2_const不是常量,不是常量,p2_constp2_const指向的變量的值指向的變量的值不不能能通過(guò)通過(guò) * *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.指針常量:指針常量:指針變量本身的值初始化后不能再改變指針變量本身的值初始化后不能再改變 定義方式:定義方式: 類(lèi)型類(lèi)型 * * 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; 只說(shuō)明了指針變量如只說(shuō)明了指針變量如cst_p1cst_p1本身是常量,但并沒(méi)有說(shuō)不能本身是常量,但并沒(méi)有說(shuō)不能改變改變* *cst_p1cst_p1的值的值必須要賦初值必須要
33、賦初值2 21 1: :2 20 0: :3 31 1203.3.指向常量的指針常量指向常量的指針常量 指針變量本身和所指對(duì)象的值都為常量,不能改變指針變量本身和所指對(duì)象的值都為常量,不能改變 定義方式:定義方式: const const 類(lèi)型類(lèi)型 * * const const 指針變量指針變量 = = 地址表達(dá)式;地址表達(dá)式; 或或 類(lèi)型類(lèi)型 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+中的變量中的變量變量必須先定義變量必須先定義( (聲明聲明) )再使用再使用變量的定義變量的定義 存儲(chǔ)類(lèi)型存儲(chǔ)類(lèi)型 數(shù)據(jù)類(lèi)型名數(shù)據(jù)類(lèi)型名 變量名列表;變量名列表; 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、; 變量的分類(lèi):根據(jù)定義變量的位置,分為兩類(lèi):變量的分類(lèi):根據(jù)定義變量的位置,分為兩類(lèi):全局變量外部變量全局變量外部變量局部變量?jī)?nèi)部變量局部變量?jī)?nèi)部變量2 21 1: :2 20 0: :3 31 122 變量的存儲(chǔ)類(lèi)型變量的存儲(chǔ)類(lèi)型 存儲(chǔ)方式:動(dòng)態(tài)存儲(chǔ)方式和靜態(tài)存儲(chǔ)方式存儲(chǔ)方式:動(dòng)態(tài)存儲(chǔ)方式和靜態(tài)存儲(chǔ)方式 靜態(tài)存儲(chǔ)方式:程序運(yùn)行過(guò)程中給此類(lèi)變量分配固定靜態(tài)存儲(chǔ)方式:程序運(yùn)行過(guò)程中給此類(lèi)變量分配固定的存儲(chǔ)空間的存儲(chǔ)空間 動(dòng)態(tài)存儲(chǔ)方式:程序運(yùn)行過(guò)程中根據(jù)需要,給此類(lèi)變動(dòng)態(tài)存儲(chǔ)方式:程序運(yùn)行過(guò)程中根據(jù)需要,給此類(lèi)變量動(dòng)態(tài)分配存儲(chǔ)空間量動(dòng)態(tài)分配存儲(chǔ)空間程序代碼區(qū)程序代碼區(qū)靜態(tài)存儲(chǔ)區(qū)靜態(tài)存儲(chǔ)區(qū)動(dòng)態(tài)存儲(chǔ)
37、區(qū)動(dòng)態(tài)存儲(chǔ)區(qū)程序的存儲(chǔ)組織程序的存儲(chǔ)組織2 21 1: :2 20 0: :3 31 123 變量的存儲(chǔ)類(lèi)型變量的存儲(chǔ)類(lèi)型autoauto、registerregister、staticstatic、externextern和默認(rèn)五種和默認(rèn)五種autoauto:自動(dòng)類(lèi)型:自動(dòng)類(lèi)型 普通的局部變量都屬于此類(lèi)普通的局部變量都屬于此類(lèi), ,分配在動(dòng)態(tài)存儲(chǔ)區(qū)中分配在動(dòng)態(tài)存儲(chǔ)區(qū)中registerregister:存放器類(lèi)型:存放器類(lèi)型staticstatic:靜態(tài)變量:靜態(tài)變量靜態(tài)局部變量:在靜態(tài)區(qū)中,只初始化一次靜態(tài)局部變量:在靜態(tài)區(qū)中,只初始化一次, ,屢次調(diào)用函屢次調(diào)用函數(shù)時(shí)能保存前一次函數(shù)調(diào)用完
38、畢時(shí)的值,延長(zhǎng)了該變量的數(shù)時(shí)能保存前一次函數(shù)調(diào)用完畢時(shí)的值,延長(zhǎng)了該變量的生存期生存期靜態(tài)全局變量:在靜態(tài)區(qū)中,限制了該變量的作用域靜態(tài)全局變量:在靜態(tài)區(qū)中,限制了該變量的作用域externextern:外部變量:外部變量定義全局變量定義全局變量聲明外部變量:擴(kuò)展了全局變量的作用域聲明外部變量:擴(kuò)展了全局變量的作用域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ù)的操作稱(chēng)為插入操作向流中添加數(shù)據(jù)的操作稱(chēng)為插入操作: : 流對(duì)象流對(duì)象數(shù)據(jù)數(shù)據(jù) : : :提取運(yùn)算符提取運(yùn)算符cincin和和coutcout是是C+C+預(yù)定義的流對(duì)象預(yù)定義的流對(duì)象 cout: cout:用于進(jìn)展輸出操作用于進(jìn)展輸出操作, ,與顯示器相關(guān)聯(lián)與顯示器相關(guān)聯(lián) cin: cin:用
41、于進(jìn)展輸入操作用于進(jìn)展輸入操作, ,與鍵盤(pán)相關(guān)聯(lián)與鍵盤(pá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)多個(gè)可以串聯(lián)多個(gè) ,同樣也可以串聯(lián)多同樣也可以串聯(lián)多個(gè)個(gè)給多個(gè)變量輸入數(shù)據(jù)給多個(gè)變量輸入數(shù)據(jù) 輸入時(shí)多個(gè)數(shù)據(jù)項(xiàng)之間用空格、輸入時(shí)多個(gè)數(shù)據(jù)項(xiàng)之間用空格、TabTab或回車(chē)分隔或回車(chē)分隔 具有智能,能夠自動(dòng)判斷其后的數(shù)據(jù)項(xiàng)的類(lèi)型,具有智能,能夠自動(dòng)判斷其后的數(shù)據(jù)項(xiàng)的類(lèi)型,并采用相應(yīng)的類(lèi)型進(jìn)展輸出或輸入并采用相應(yīng)的類(lèi)型進(jìn)展輸出或輸入 使用流對(duì)象時(shí)使用流對(duì)象時(shí), ,必
42、須必須#include#include相應(yīng)的頭文件相應(yīng)的頭文件( (如如iostream)iostream)并使用語(yǔ)句并使用語(yǔ)句“using namespace std;“using namespace std;翻開(kāi)名稱(chēng)空間翻開(kāi)名稱(chēng)空間stdstdcincin與與coutcout在在iostreamiostream中的中的stdstd名稱(chēng)空間中定義名稱(chēng)空間中定義2 21 1: :2 20 0: :3 31 130二二. .簡(jiǎn)單的輸入簡(jiǎn)單的輸入/ /輸出格式控制:使用操縱符輸出格式控制:使用操縱符(manipulator)(manipulator) I/OI/O流類(lèi)庫(kù)中提供了假設(shè)干個(gè)操縱符,可以
43、直接嵌入到輸流類(lèi)庫(kù)中提供了假設(shè)干個(gè)操縱符,可以直接嵌入到輸入入/ /輸出語(yǔ)句中實(shí)現(xiàn)輸出語(yǔ)句中實(shí)現(xiàn)I/OI/O格式控制格式控制操縱符操縱符功能功能endlendl輸出一個(gè)換行符,并刷新流輸出一個(gè)換行符,并刷新流decdec用十進(jìn)制輸入或輸出數(shù)值用十進(jìn)制輸入或輸出數(shù)值octoct用八進(jìn)制輸入或輸出數(shù)值用八進(jìn)制輸入或輸出數(shù)值hexhex用十六進(jìn)制輸入或輸出數(shù)值用十六進(jìn)制輸入或輸出數(shù)值endsends輸出一個(gè)空格符,并刷新流輸出一個(gè)空格符,并刷新流setw(int n)setw(int n)設(shè)置其后一個(gè)數(shù)據(jù)項(xiàng)占據(jù)的寬度設(shè)置其后一個(gè)數(shù)據(jù)項(xiàng)占據(jù)的寬度setfill(char c)setfill(char
44、c)設(shè)置數(shù)據(jù)項(xiàng)寬度不足時(shí)的填充字符設(shè)置數(shù)據(jù)項(xiàng)寬度不足時(shí)的填充字符setprecision(int n)setprecision(int n) 設(shè)置浮點(diǎn)數(shù)輸出小數(shù)位數(shù)設(shè)置浮點(diǎn)數(shù)輸出小數(shù)位數(shù) 常用的常用的I/OI/O操縱符操縱符2 21 1: :2 20 0: :3 31 131說(shuō)明:說(shuō)明: 不帶參數(shù)的不帶參數(shù)的I/OI/O操縱符定義在操縱符定義在iostreamiostream中中 使用帶參數(shù)的使用帶參數(shù)的I/OI/O操縱符,需包含操縱符,需包含iomanipiomanip setw()setw()只對(duì)其后緊跟著的一個(gè)真正的數(shù)據(jù)項(xiàng)起作用只對(duì)其后緊跟著的一個(gè)真正的數(shù)據(jù)項(xiàng)起作用例:例: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)造 對(duì)應(yīng)的控制語(yǔ)句對(duì)應(yīng)的控
46、制語(yǔ)句控制語(yǔ)句控制語(yǔ)句無(wú)條件控制語(yǔ)句無(wú)條件控制語(yǔ)句條件控制語(yǔ)句條件控制語(yǔ)句分支語(yǔ)句分支語(yǔ)句循環(huán)語(yǔ)句循環(huán)語(yǔ)句ifif語(yǔ)句語(yǔ)句switchswitch語(yǔ)句語(yǔ)句switchswitch語(yǔ)句語(yǔ)句forfor語(yǔ)句語(yǔ)句whilewhile語(yǔ)句語(yǔ)句do-whiledo-while語(yǔ)句語(yǔ)句breakbreak語(yǔ)句語(yǔ)句continuecontinue語(yǔ)句語(yǔ)句returnreturn語(yǔ)句語(yǔ)句gotogoto語(yǔ)句語(yǔ)句2 21 1: :2 20 0: :3 31 1336 6 數(shù)組、構(gòu)造體、共用體和枚舉類(lèi)型數(shù)組、構(gòu)造體、共用體和枚舉類(lèi)型一一. .數(shù)組:需要處理一樣類(lèi)型的一批相關(guān)數(shù)據(jù)時(shí)使用數(shù)組:需要處理一樣類(lèi)型的一批相
47、關(guān)數(shù)據(jù)時(shí)使用數(shù)組分為一維數(shù)組與多維數(shù)組數(shù)組分為一維數(shù)組與多維數(shù)組 定義:定義: 一維數(shù)組:類(lèi)型一維數(shù)組:類(lèi)型 數(shù)組變量名數(shù)組變量名 數(shù)組長(zhǎng)度數(shù)組長(zhǎng)度 ; 二維數(shù)組:類(lèi)型二維數(shù)組:類(lèi)型 數(shù)組變量名數(shù)組變量名 第一維長(zhǎng)度第一維長(zhǎng)度第二維長(zhǎng)度第二維長(zhǎng)度; 例:例: int nArr10;int nArr10; int nArr2d105; int nArr2d105;說(shuō)明:說(shuō)明:數(shù)組長(zhǎng)度必須是常量表達(dá)式:編譯時(shí)求值數(shù)組長(zhǎng)度必須是常量表達(dá)式:編譯時(shí)求值C C意義上的字符串采用字符數(shù)組作為其存儲(chǔ)形式,在最后添意義上的字符串采用字符數(shù)組作為其存儲(chǔ)形式,在最后添加一個(gè)加一個(gè)ASCIIASCII碼為碼為0 0
48、的字符作為字符串的完畢標(biāo)志的字符作為字符串的完畢標(biāo)志2 21 1: :2 20 0: :3 31 134stringstring類(lèi):字符串類(lèi)類(lèi):字符串類(lèi)stringstring類(lèi)封裝了字符串的根本特性和對(duì)字符串的典型操作類(lèi)封裝了字符串的根本特性和對(duì)字符串的典型操作, ,其對(duì)象可用于保存幾乎任意長(zhǎng)的字符串,對(duì)處理輸入文件其對(duì)象可用于保存幾乎任意長(zhǎng)的字符串,對(duì)處理輸入文件中一行上字符數(shù)不定的情況特別有用中一行上字符數(shù)不定的情況特別有用stringstring類(lèi)是類(lèi)是STLSTL中的類(lèi),使用時(shí)需要包含頭文件中的類(lèi),使用時(shí)需要包含頭文件stringstring并并翻開(kāi)名稱(chēng)空間翻開(kāi)名稱(chēng)空間stdstds
49、tringstring類(lèi)的操作:成員函數(shù)類(lèi)的操作:成員函數(shù)求串長(zhǎng):求串長(zhǎng):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時(shí),返回時(shí),返回0 0;當(dāng);當(dāng)s1s1大于大于s2s2時(shí)時(shí)返回正值,否那么返回負(fù)值返回正值,否那么返回負(fù)值字符串的局部比較字符串的局部比較 s1 pare(beg1,len1,s2,beg2,len2); s1 pare(beg1,len
54、1,s2,beg2,len2); beg1 beg1和和len1len1指示指示s1s1參與比較的開(kāi)場(chǎng)字符的下標(biāo)與長(zhǎng)度,參與比較的開(kāi)場(chǎng)字符的下標(biāo)與長(zhǎng)度,beg2beg2和和len2len2指示指示s2s2參與比較的開(kāi)場(chǎng)字符的下標(biāo)與長(zhǎng)度參與比較的開(kāi)場(chǎng)字符的下標(biāo)與長(zhǎng)度運(yùn)算符:運(yùn)算符:!= =!= =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指定子串的開(kāi)場(chǎng)下標(biāo),指定子串的開(kāi)場(chǎng)下標(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例:把字母表中的逗號(hào)例:把字母表中的逗號(hào)“,全部替換為分號(hào)全部替換為分號(hào)“;#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語(yǔ)言式的語(yǔ)言式的charchar* *型字符串:型字符串:data() c_str() copy()data() c_str() copy() char char * * ptr= ptr=s.data(); /char s.data(); /char * * ptr=s.c_str();
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/IEC 23090-7:2022/AMD1:2024 EN Information technology - Coded representation of immersive media - Part 7: Immersive media metadata - Amendment 1: Common metadata for imme
- 【正版授權(quán)】 ISO 7718-2:2025 EN Aircraft - Passenger doors interface requirements for connection of passenger boarding bridge or passenger transfer vehicle - Part 2: Upper deck doors
- 【正版授權(quán)】 ISO 16900-11:2025 EN Respiratory protective devices - Methods of test and test equipment - Part 11: Determination of field of vision
- 【正版授權(quán)】 IEC 81355-1:2024 EN/FR Industrial systems,installations and equipment and industrial products - Classification and designation of information - Part 1: Basic rules and clas
- 2025年集成電路代工廠商業(yè)秘密保護(hù)合同
- 2025年動(dòng)力調(diào)諧陀螺平臺(tái)項(xiàng)目建議書(shū)
- 提升學(xué)校藝術(shù)教育影響力的策略計(jì)劃
- 醫(yī)院宣傳工作總結(jié)與改進(jìn)方法計(jì)劃
- 班級(jí)傳統(tǒng)文化傳承活動(dòng)的計(jì)劃
- 營(yíng)養(yǎng)科膳食服務(wù)效果評(píng)估與改進(jìn)計(jì)劃
- 一次性纖維環(huán)縫合器
- 中華民族的形成與發(fā)展
- 2023年上海中僑職業(yè)技術(shù)大學(xué)單招考試職業(yè)技能考試模擬試題及答案解析
- 兒科抗生素使用
- 中國(guó)教育公益領(lǐng)域發(fā)展報(bào)告
- 第2章第1節(jié)有機(jī)化學(xué)反應(yīng)類(lèi)型課件高二下學(xué)期化學(xué)魯科版選擇性必修3
- 綠化工程承包合同 綠化工程承包合同范本(二篇)
- 建筑財(cái)務(wù)出納年終總結(jié)PPT模板下載
- GB/T 9574-2001橡膠和塑料軟管及軟管組合件試驗(yàn)壓力、爆破壓力與設(shè)計(jì)工作壓力的比率
- 三位數(shù)乘一位數(shù)練習(xí)題(300道)
- 校本課程《竹之匠藝》
評(píng)論
0/150
提交評(píng)論