c++進(jìn)階知識(shí)小結(jié)(適用對(duì)c或c++有一定了解的人)_第1頁
c++進(jìn)階知識(shí)小結(jié)(適用對(duì)c或c++有一定了解的人)_第2頁
c++進(jìn)階知識(shí)小結(jié)(適用對(duì)c或c++有一定了解的人)_第3頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、換行符C+中 cout”hallo word!n” 中n 同樣可以起到換行的作用關(guān)鍵字C+中預(yù)定義了 63 個(gè)關(guān)鍵字,參見表 2-2。另外,還定義了 11 個(gè)運(yùn)算符關(guān)鍵字,它們是:and、and_eq、bitand、bitor、compl、not、not_eq、or、or_eq、xor ?、xor_eq另外,有些標(biāo)識(shí)符雖然不是關(guān)鍵字,但C+語言總是以固定的形式用于專門的地方,也不能把它們當(dāng)作一般標(biāo)識(shí)符使用,以免造成混亂。這樣的標(biāo)識(shí)符有include、define 等asmdefaultfloatoperatorstatic_castunion auto deleteforprivatestru

2、ctbooldofriendprotectedswitchusing breakdoublegotopublic templatevirtualcasedynamic _castifregisterthisvoidcatchelseinlinereinterpret_castthrowcharenumint returntruewchar_tclass explicit longshorttrywhile constexportmutable signedtypedef const_ castexternnamespacesizeoftypeid. Continue falsenewstati

3、ctypename. .unsigned signedunsigned signed char signed unsigned 修飾詞時(shí),后面的類型說明符可以省略。例如:signed int n; /與int n;等價(jià)signed char ch; /與char ch;等價(jià)unsigned int n; /與unsigned n;等價(jià)unsigned char ch; /與unsigned ch;等價(jià)short 只用于修飾 int,且用 short 修飾時(shí),int 可以省略,即: short int n; /與short n;等價(jià)long int doublelong int 時(shí),int 可以

4、省略,即: long int n; 與long 等價(jià)int unsigned int 類型占用一個(gè)機(jī)器一個(gè)字16 位操作系統(tǒng)上,它2 32 4 個(gè)字節(jié)。變量類型在計(jì)算時(shí)的自動(dòng)轉(zhuǎn)換兩個(gè) float 型數(shù)參加運(yùn)算,雖然它們類型相同,但仍要先轉(zhuǎn)換成double 型再進(jìn)行運(yùn)算,結(jié)果亦為 double 型;char 型與 short 型會(huì)先轉(zhuǎn)換成 int 型再進(jìn)行運(yùn)算轉(zhuǎn)義字符n / 換 行r / 回 車t / v / b / 退 格f / 進(jìn)紙 / 單引號(hào) () / 雙引號(hào) () / 反斜杠 ()定義符號(hào)常量const 類型 名字 = 值; 例 2-7:const double PI = 3.14159

5、27; /圓周率 const long number = 49L;const char TAB = t; const char QUERY = ?;const double SOMENUM = 1.235E75;字符串的輸入scanf我們輸入字符串hello there,但讀到空格時(shí),scanf()就停止了,僅hello存入了字符串。Gets如果需要讀取帶空格的字符串,可以使用函數(shù) gets gets n或0時(shí)才返回。條件運(yùn)算符條件運(yùn)算符是 C+中唯一的三目運(yùn)算符,也稱為三元運(yùn)算符,它有三個(gè)操作數(shù): 操作數(shù) 1(表達(dá)式) ? 操作數(shù) 2 : 操作數(shù) 3逗號(hào)運(yùn)算符逗號(hào)運(yùn)算符帶兩個(gè)操作數(shù),返回值是

6、右操作數(shù)。逗號(hào)表達(dá)式的一般形式是:表達(dá)式 1,表達(dá)式 2,表達(dá)式 n,它的值是取表達(dá)式 n的值。例 1:int m, n, min;int mCount = 0, nCount = 0;min = (m . new delete(a+b)*(a-b)(CWnd *wnd)- FromHandle (CWnd wnd). FromHandle new CWnddelete (CWnd *wnd)位運(yùn)算符、邏輯位運(yùn)算符按位求反)1 00 。&(按位與(按位或,(按位異或)其中優(yōu)先級(jí)&高于,而高于|。& :兩個(gè)都為 1 時(shí)結(jié)果為 1。| :兩個(gè)其中有一個(gè)為 1 則結(jié)果為 1。 :兩個(gè)不同則結(jié)果為 1

7、,否則為 0。、移位運(yùn)算符左移、(右移例. 指出下面表達(dá)式的功能。(p&0377)|(k&0 xff)8答:將整數(shù)p 的低字節(jié)作為作為結(jié)果的低字節(jié),k 的低字節(jié)作為結(jié)果的高字節(jié)拼成一個(gè)新的整數(shù)。實(shí)例10 進(jìn)制值二進(jìn)制值x01100001001y02700010111x36611110110 x & y00100000001x | y03700011111x y03600011110 x 200200000010擴(kuò)展:+= 加賦值-= 減賦值*= 乘賦值/= 除賦值%= 求余賦值&= 按位與賦值| = 按位或賦值= 按位異或賦值= 右移位賦值需要注意的是: x *= y+8 等價(jià)于 x=x*(y

8、+8),不等價(jià)于 x = x*y+8。同樣:z &= y-x 等價(jià)于z = z & (y-x),而不等價(jià)于 z = z &y -x。短路表達(dá)式Int a=3;!a|a+|b+;a+0,b+a 4,b 0。帶有缺省參數(shù)的函數(shù)的定義及使用規(guī)則void ShowMessage(char*Text, int Length = -1, int Color = 0);調(diào)用 ShowMessage 函數(shù)時(shí),可以指定一個(gè)、二個(gè)或三個(gè)參數(shù): ShowMessage(Helloo);ShowMessage(Helloo, 5);ShowMessage(Helloo, 5,8);8 5.例如,下面的調(diào)用是錯(cuò)誤的:S

9、howMessage(Helloo, , 8);函數(shù)的地址傳遞及值傳遞地址傳遞可以改變實(shí)參的值。inline 內(nèi)聯(lián)函數(shù)double Average(double total, int number)return total/number;inline double Average(double total, int number)return total/number;上面的內(nèi)聯(lián)函數(shù)同它的非內(nèi)聯(lián)函數(shù)相比,僅僅是多了一個(gè)關(guān)鍵字 inline,它們?cè)诠δ苌蟙ouble int double 型,且使用內(nèi)聯(lián)函數(shù)時(shí)應(yīng)注意以下幾個(gè)問題:在共享。簡(jiǎn)潔if switch ,否則,函數(shù)定義時(shí)即使inline

10、關(guān)鍵字,編譯器也會(huì)把該函數(shù)作為非內(nèi)聯(lián)函數(shù)處理。即:#include int increment(int i); inline increment(int i)i+;return i;無法提高效率。void main()int i=0; while(i3)i=increment(i); couti is iendl;全局變量及其調(diào)用在開頭定義的全局變量全局變量默認(rèn)定義為 0在函數(shù)外部定義的變量才是全局變量,調(diào)用全局變量的符號(hào)為在 main 函數(shù)開始時(shí)定義的變量不是全局變量全局變量在未重名的情況下可以直接調(diào)用。在中間或是后邊定義的全局變量量定義點(diǎn)之前的函數(shù)要引用該全局變量或另一個(gè)源文件中的函數(shù)要引

11、用該全局變量函數(shù)內(nèi)對(duì)要引用的全局變量加說明。#include int max(int x, int main()extern int a, b; /全局變量說明,而非定義printf(%dn, max(a, b);return 0;int a = 13, b = -8; int max(int x, int y)int z;z = x y ? x : y; return z;extern extern int size = 10; / !在主函數(shù)內(nèi)部定義b 是不對(duì)的,下圖為正確的定義方法。17 靜態(tài)變量如果在變量的定義前加上 static 關(guān)鍵字,就定義了靜態(tài)變量。static static

12、關(guān)鍵字,就稱為靜態(tài)全局函數(shù)。靜態(tài)局部變量的特性也是很有用的我們就可以把該局部變量定義為靜態(tài)的。#include void func()static int i = 0;cout i = +i endl;void main()for(int x = 0; x 10; x+) func();本程序的運(yùn)行結(jié)果為:i =1 i =6i =2 i =7i=3 i =8i=4 i =9i=5 i =10類似于全局變量,靜態(tài)局部變量自動(dòng)初始化為0。函數(shù)的重載C+中,當(dāng)有一組函數(shù)完成相似功能時(shí),函數(shù)名允許重復(fù)使用,編譯器根據(jù)參數(shù)表中參數(shù)的個(gè)數(shù)或類型(不能根據(jù)形參變量名)來判斷調(diào)用哪一個(gè)函數(shù),這就是函數(shù)的重載。

13、例 5-26#include void show(int val)printf(Integer: %dn, val);void show(double val)printf(Double: %lfn, val);void show(char *val)printf(String: %sn, val);int main()show(12);show(3.1415); show(Hello Worldn!); return (0);定義重載的函數(shù)時(shí), 我們應(yīng)該注意以下幾個(gè)問題:避免函數(shù)名字相同,但功能完全不同的情形。例如上面的重載函數(shù)show 是相關(guān)的,它們均是向屏幕打印信息。函數(shù)的形參變量名不同

14、不能作為函數(shù)重載的依據(jù)。C+否則,程序編譯時(shí)會(huì)出現(xiàn)函數(shù)重復(fù)定義的錯(cuò)誤。如果轉(zhuǎn)換后仍然不能匹配到重載的函數(shù),則會(huì)產(chǎn)生一個(gè)編譯錯(cuò)誤。字符數(shù)組兩種字符串的初始化.s1 9 兩種方法定義都對(duì):Char a=”字符串”;char a=”字符串”;0.會(huì)使字符串輸入終止.假定我們已經(jīng)定義: char s110, s210; 執(zhí) 行 語 句 : scanf(%s, s1);輸入字符串Learn C+,數(shù)組 s1 中的元素如下圖:即將空格前的字符送入數(shù)組 s1 中,忽略了空格后的字符。如果執(zhí)行語句:scanf(%s%s, s1, s2);輸入字符串Learn C+,數(shù)組 s1 和 s2 中的元素如下圖:指針(

15、含引用)(1)*(pointer_1)+相當(dāng)于 a+*(pointer-1+), 這時(shí)先按pointer_1 a pointer_1 pointer_1 便不再指向a 了。常量指針我們也可以用定義常量指針指向常量,以下兩種形式都是合法的:int d =1;const int* const x = &d; / (1) int const* const x2 = &d; / (2)現(xiàn)在,指針和變量都不能改變。注意:定義指針常量時(shí)必須初始化。下面的常量指針定義是錯(cuò)誤的:const int* const x;函數(shù)指針. 函數(shù)有兩個(gè)整型參數(shù),返回類型為指向 float 變量的指針。Compare = &

16、strcmp; / Compare 指向 strcmp 函數(shù)&運(yùn)算符可以省略:Compare = strcmp; / Compare 指向 strcmp 函數(shù)函數(shù)指針也能在定義時(shí)初始化:int (*Compare)(const char*, const char*) = strcmp;當(dāng)把函數(shù)地址賦給函數(shù)指針時(shí)必須匹配。上面的定義是有效的,因?yàn)楹瘮?shù) strcmp的原型與 Compare 匹配:int strcmp(const char*, const char*);給定了上面的定義后,strcmp 能被直接調(diào)用,也能通過 Compare 被間接調(diào)用,下面的三個(gè)調(diào)用是等價(jià)的:strcmp(Tom

17、, Tim); / 直接調(diào)用(*Compare)(Tom, Tim); / 間接調(diào)用Compare(Tom, Tim); / 間接調(diào)用float (* funptr)(int x,int y);這里定義了一個(gè)指向函數(shù)的指針變量 funptr,所指函數(shù)帶兩個(gè)整型參數(shù),返回類型為float。下面定義函數(shù)指針方法是不對(duì)的:float * funptr(int x,int y); 函數(shù)有兩個(gè)整型參數(shù),返回類型為指向 float 變量的指針。引用.引用是一個(gè)變量的別名,除用&取代*外,定義引用的方法與定義指針類似。例如:double num1 = 3.14;double &num2 = num1; /

18、num1 未加&num2 num1 num1 的別名。也就是說, 它們是相同的變量。例如,如果執(zhí)行下面的語句:num1 = 0.16;則 num1 和 num2 的值均為 0.16?;?。例如,下面的定義是錯(cuò)誤的:double &num3; / 非法:引用沒有初始化num3 = num1;注意事項(xiàng):當(dāng)以引用方式傳遞函數(shù)參數(shù)時(shí),我們常使用const 關(guān)鍵字。例如: void f1(const int i) i+; / 非法,編譯錯(cuò)誤這可以避免在函數(shù)中修改了不該修改的參數(shù),有助于提高程序的可靠性。使用引用的規(guī)則:初始化后,程序不能改變引用的值。不能創(chuàng)建指向引用的指針。不能比較兩個(gè)引用的值,可比較被引

19、用變量的值。不能使引用的值加,減和改變,但對(duì)被引用變量的值可以。void 進(jìn)行引用。不能建立引用數(shù)組。沒有引用的引用。有空指針,無空引用。typedeftypedef int INTEGERINTEGER int 作整型變量的類型說明了,例如: INTEGER a,b;它等效于:int a,b;typedef 定義的一般形式為: typedef 原類型名 新類型名例如:typedef int * intptr;intptr intptr p;等價(jià)于:int * p;需要注意的是:typedef 定義的類型只是 C+已有類型的別名,而不是新類型。有時(shí)也可用宏定義來代替 typedef 的功能,但

20、是宏定義是由預(yù)處理完成的,而 typedef 則是在編譯時(shí)完成的,后者更為靈活方便。結(jié)構(gòu)和鏈表(1)結(jié)構(gòu)的定義(注意最后的分號(hào))struct Child double height; double weight; int years;int months; char gender;Child double、兩個(gè)t 和一個(gè)r 域(或成員,它可以與+的基本數(shù)據(jù)類型一樣地使用(注意)結(jié)構(gòu)類型定義也是一個(gè)語句,所以結(jié)尾必須有分號(hào);,否則,會(huì)產(chǎn)生編譯錯(cuò)誤。指向結(jié)構(gòu)的指針包含 new&delete 的使用#include #include struct Person_Info char name10; i

21、nt age;long ssn;void main (void)Person_Info* p1;p1 = new Person_Info; / 申請(qǐng)內(nèi)存p1-age = 32; / 給 age 成員賦值strcpy(p1-name,Bobbie); / name 成員賦值/ 打印 p1 指向的內(nèi)容cout Name: name endl; / 打印 name 成員cout Age: age endl; / 打印 age 成員delete p1; / 釋放申請(qǐng)的內(nèi)存該程序的運(yùn)行結(jié)果為: Name:Bobbie Age:32宏定義(1)Const define 的區(qū)別#define 命令定義的符號(hào)不具有類型,它僅僅是被另一個(gè)字符串替換罷了,而const 產(chǎn)生的符號(hào)常量是具有類型的。例如:const int SIZE=80;說明 SIZE 是一個(gè) int 型的常

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論