




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第一章 C+ 語言概述1.1 c+ 語言的發展c+ 語言起源于 c 語言。 1980 年,美國貝爾實驗室的 Bjarne Stroustrup 博士及其同事在 c 語 言的基礎上,從 Simula 67 中引入面向對象的特征,開發出一種過程性與對象性相結合的程序設計 語言。最初稱為“帶類的 C,至U 1983年取名為C+。以后又經過不斷的完善和發展,成為目前的 C+語言。一方面,C+語言將c語言作為它的子集,使它能與 c語言兼容;另一方面,C+語言支持 面向對象的程序設計,這是對 C語言的重要改進。1.2 C+ 語言的特點(1) c+ 語言是一種面向對象的程序設計語言。(2) c+ 是程序員和
2、軟件開發者在實踐中創造的。(3) C+是C語言的超集。1.3 C+ 程序的開發過程(1) 編輯(2) 編譯(3) 鏈接(4) 運行和調試1.4 C+ 程序的基本框架1 基本組成#include Void main()2 結構化程序設計框架函數是程序的基本組成單元,是程序中完成一定功能的模塊。函數的聲明函數的定義函數的調用3 面向對象程序設計框架類的定義類成員函數的定義第二章 C+ 的基本語法2.1 標識符是用來標識變量、函數、數據類型等的字符序列。C+中的標符可以由字母、下劃線(_)和數字09 組成,但必須是以字母或下劃線( _)開頭。2.2 關鍵字C+語言中預定義了一些標識符,稱之為關鍵字,
3、系統有特定用途,它們不能被再定義。2.3 數據類型布爾型、字符型、整型、浮點型和空類型是基本數據類型。指針、數組、引用、結構和類可以通 過基本數據類型進行構造,稱之為復合數據類型。2.4 變量變量就是機器一個內存位置的符號名,在該內存位置可以保存數據,并可通過符號名進行訪問。 為了提高程序的可讀性,給變量命名時,應該注意使用有意義的名字。變量第一次賦值稱之為初始 化,變量在使用之前應當先聲明。2.5 常量常量是在程序運行過程中,其值不能改變的量。2.6 基本輸入輸出C+語言本身沒有輸入輸出功能,而是通過輸入輸出庫完成I/O操作。C程序使用的stdio (標準I/O)I/O庫也能夠在 C+中使用
4、;另外 C+語言還提供了一種稱之為 iostream ( I/O流庫)的I/O 庫。 Iostream 流主管數據類型的識別工作和溝通操作系統,全權負責把流中的數據送到對應的設備 中。流的格式操作,如對齊,寬度限制、精度規定、數制顯示等形式也可直接以輸出流狀態的方式操作。7. 運算符及表達式C+基本的各種運算符構成(算術運算符、關系運算符、邏輯運算符、位運算符、條件運算符、賦 值運算符、逗號運算符幾其它運算符 )以及它們的優先級和結合性。自增、自減運算符,前綴式先將操作數增1(或減 1),然后取操作數的新值參與表達式的運算。后綴是先將操作數增 1(或減 1)之前的值參與表達式的運算, 到表達式
5、的值被引用之后再做加 1(或 減 1)運算。關系運算符兩邊的數值結果必須是類型相同的。在實現優先級與實際需要不相符時, 需要使用括號來改變。 參加運算的兩個操作數類型不同時, C+將自動作隱式類型轉換,但有時要作強制類形轉換。表達式和語句的一個重要區別是:表達式具有值,而語句是沒有值的并且語句末尾要加分號。第三章 C+ 的基本語句3.1 C+提供了哪些常用語句?答:表達式語句和空語句;復合語句;分支語句包括條件語句和開關語句;循環語句包括 while 語句、 do-while 語句、 for 語句三種形式。轉向語句包括 goto 、 break 、 continue 和 return 語句。3
6、.2 什么是表達式語句?它與表達式有什么不同?答:任何一個表達式后加上分號就是一條表達式語句。表達式與表達式語句有著不同的用途。在需要表達式的地方不要用表達式語句,反之亦然。例 如,條件語句中,關鍵字 if 后面括號內是表達式,這時就不能用表達式語句,同樣地,在程序中函 數體內要求是一條表達式語句,如果不寫分號,將會出錯。3.3什么是復合語句?什么是分程序?答:復合語句是由花括號括起來的兩條或兩條以上的語句序列。分程序是含有定義變量類型的說明語句的復合語句。它是一種特殊的復合語句。3.4條件語句的格式如何?if語句中對else子句有何規定?答:在if語句中最多只能有一個 case子句,也可以沒
7、有 else子句。規定else子句是與它最近的一個if子句配對使用的。3. 5開關語句的格式如何?break語句在開關語句中有何作用?答:switchv整型表達式case整常型表達式1: 語句序列1case整常型表達式 2: 語句序列2case整常型表達式 n: 語句序列ndefaults 語句序列n+1先計算switch中表達式的值,在大括號中若找到一個匹配的值就從該語句開始,依次向下執行。否則,執行default后面的語句組。在 語句序列 中如有break語句時,執行到該語句時,退出整個開關語句,執行開關語句后面的語句。如果執行完一個 語句序列 后沒有遇到break語句,則執行該語句序列的
8、下一個 語句序列, 并依次類推。3.6開關語句中,case子句的條件有什么特點?答:當條件值為一系列的整數值時,考慮用 switch會比較簡捷。(1) switch 后面的表達式只能是整型、字符型或枚舉表達式。(2) case語句的標號不能重名。(3) case語句通常與break聯用,多個case可以共用一組執行語句。各個case (包括default )的出現次序可以任意,在每個case分支都帶有break的情況下,case次序不影響執行結果。3.7 C+提供哪些循環語句?它們各自有什么特點?它們可以相互替代嗎?可以相互嵌套嗎?答:C+提供如下3種循環語句。(1)while循環語句(2)d
9、o-while循環語句(3)for循環語句while循環語句先判斷是否滿足循環條件,如果滿足循環條件,則執行一次循環體,再判斷是否執行下一次循環。Do-while循環語句先執行一次循環體后再判斷是否繼續執行循環體還是退出循環。For循環語句,先設置循環變量初值,再判斷是執行循環體還是退出循環。如果執行了循環體,再改變循環變量值后,判斷是執行下一次循環體還是退出循環,依次類推。3種循環語句是可以替代的,它們以while循環為最簡單,do-while循環和for循環都可以寫成while循環的形式。3種循環語句可以相互嵌套,任何一種循環的循環體內可以包含任何一種循環語句。3.8 while循環語句與
10、do-while循環語句有何區別?答:這兩種循環語句十分相近,其區別僅在于do-while 循環語句在判斷循環條件之前先執行一次循環體。可用 while循環替代do-while 循環。3.9 for循環語句有何特點?答:for循環語句在使用方面比較靈活。 for循環語句中for關鍵字后面括號內的 3個表達式可以 移到括號外面,使得括號內有兩個、一個或沒有表達式,但兩個分號不能省略。另外,還可以將循環體內的簡單功能放到括號內。 for循環語句在使用中各種花樣比較多,編程者可根據需要來選擇。3.10 break語句在循環體中有什么作用?答:在循環體內遇到 break語句,則將退出該重循環。如果有多
11、重循環,break語句只是退出它所在的那重循環,到其外層循環中。3.11continue 語句的功能是什么?答:該語句只能用在循環體內,執行該語句將結束本次循環,轉去判斷是否還再執行下一次循環。第4章函數知識點1函數的定義在C+中,定義函數的一般形式為:返回類型 函數名 ( 形式參數表)函數體其中,返回類型 是該函數返回值的數據類型,若該函數無返回值,只是一個過程調用,則該 函數的類型為void。函數名 是一種標識符,通過它來調用函數。形式參數表 由逗號分隔,分別說明函數的各個形式參數,若無形式參數,圓括號也不可省略。 形式參數的使用將使被調用函數可以從調用函數那里獲取數據。函數體 可以包含若
12、干個變量和函數的定義,以及各種語句序列。若函數體是0條語句,稱該函數為空函數。無論函數體內有多少條語句,花括號是不可省的。注意:C+不允許函數定義嵌套。另外,關于函數體中return語句的形式有兩種:(1) retum表達式;/用于帶返回值的函數(2) return ; /用于無返回值的函數,即返回類型為void的函數。知識點2函數的說明函數的說明又稱為函數的聲明。在C+中,函數的說明原則有以下兩點。(1) 若一個函數先定義,后調用,則調用前可以不必說明;(2) 若一個函數先調用,后定義,則調用前必須說明。說明調用的函數的方法為:數據類型 函數名 ( 參數表);知識點3函數的調用在C+中,函數
13、調用的格式為:函數名 ( 實參表);實參表應該和形參表意義對應。根據對函數返回值的使用方式,函數的調用方法大致可分為:(1)語句調用;(2)表達式調用;(3)參數調用。函數在調用之前,一定要定義或說明。函數調用過程就是將實參傳遞給給形參,執行函數體后將結果返回的過程。知識點4函數的原型說明在C+中,在調用任何函數之前,必須確保該函數已有函數原型。C+函數的聲明(說明)就是原型的聲明:這種聲明也叫函數原型。函數原型的語法格式與函數的說明格式相同。格式如下:數據類型 函數名 (形參列表);函數原型說明的兩種形式為:(1) 直接使用函數定義的頭部,并且必須在后面加上一個分號;(2) 在函數原型說明中
14、省略參數列表中的形參變量名,只給出函數名、函數類型、參數的個 數及次序,注意函數原型說明后面的分號不能省略。知識點5函數的返回值類型函數返回類型根據函數是否帶有參數以及函數是否有返回值,可將函數分為4種,(1)帶參數的有返回值函數(2)不帶參數的有返回值函數(3)帶參數的無返回值函數 (4)不帶參數的無返回值函數。知識點6函數的參數傳遞方式(1) 傳值調用:要求實參為常量值或表達式值,形參為變量。特點是:在被調用函數中改變形參值只影響副本中的值,而對實參變量值沒有影響。實現機制:將實參值傳遞給形參,即形參從實參處拷貝一個副本。(2) 傳址調用:要求實參用變量的地址值,形參用指針。特點:將實參的
15、地址值傳遞給形參的指針,使形參指針直接指向實參的變量,于是可以通過改變形參所指向的變量值來改變實參值。實現機制:將實參的地址賦給對應的形參指針時,使形參指針指向實參變量值。(3) 引用調用:要求形參用引用,實參用變量名,形參的引用便是實參變量的別名。特點:用具有傳址調用提高運行效率的優點,又具有可通過改變形參來影響實參的特點。因此,可以用引用調用來替代傳址調用,因為引用調用的實現方法比傳址調用的實現方法更簡單明了。所以C+編程中常用引用調用,而少用傳址調用。知識點7函數的參數設置默認值在C+中 ,允許在函數說明或定義時給一個或多個參數指定默認值。但在一個指定了默認值的參 數的右邊不可以出現沒有
16、指定默認值的參數。在調用函數時,編譯器按從左到右的順序將實參與形參結合,當實參數目不足時,編譯器也將按同樣的順序用說明或定義中的默認值補足所缺少的實參。在 給某個參數指定默認值時候,可以是一個值,也可以是任意復雜表達式。例如:voidinit(inti=0, int j=0);知識點8函數的重載函數重載是指同一個函數名可以對應著多個函數的實現。函數重載要求編譯器能夠唯一地確定調用一個函數時應執行哪個函數代碼,即采用哪個函數實現。確定函數實現時,要從函數參數的個數和類型上來區分。例如,可以給函數add()定義兩個函數實現,該函數的功能是求兩個操作數之和,其中,一個是實現兩個int之和,一個是實現
17、兩個float型數之和。知識點9內聯函數C+引入內聯函數,節省了調用開銷,大大地提高了函數的執行效率。 內聯函數與一般函數區別之 處僅在于函數調用的處理,一般函數進行調用時,要將程序執行權轉到被調用函數中 ,然后再返回到 調用它的函數中;而內聯函數在調用時是,是將調用表達式用內聯函數體直接替換。將一個函數定義為內聯函數,只要定義時,在函數名前加inline即可。注意:內聯函數體內不允許有開關語句和循環語句,切定義必須出現在內聯函數第一次被調用之刖。知識點10遞歸函數在C+編程中,允許使用函數的遞歸調用,因為遞歸是一種非常有用的程序設計技術。遞歸就是某一種事物直接或間接地調用自己。一個函數直接或
18、間接地調用自身,便構成了函數的遞歸調用,前者稱為直接遞歸調用,后者稱為間接遞歸調用。 在一個函數中調用自身函數的函數稱為遞歸函數。遞歸函數在執行時,弓I起一系列的調用和回代的過程。遞歸過程不應無限制地進行下去,應當在調用有限次后就達到遞歸調用的終點,得到一個確定的值,然后進行回代。回代的過程是從一個已知值推出下一個值。任何有意義的遞歸總是由遞歸形式和遞歸終止條件兩部分構成。掌握:數組作為函數參數和數組元素作為函數參數調用方式?答:數組作為函數參數和數組元素作為函數參數是不同的。它們雖然都屬于傳值調用,但是數組作為函數形參時實參用數組名,它是一個地址值,對應的是傳址調用,不拷貝副本,實參形參共用
19、同一個數組空間。數組元素作為函數參數是傳值調用,實參用的是數組元素值,拷貝副本給形參。因此,兩者在調用機制上是有區別的。掌握:指針作為函數參數調用方式?知識點11變量的作用域與存儲類型那個(1)標識符的作用域規則是什么?在C+中,作用域的種類有哪些?答: 標識符的作用域規則規定標識符在定義它的范圍內是可見的, 而在該范圍之外是不可見的。C+十語言中作用域從大到小依次有程序級的、文件級的、類級的、函數級的、程序塊級的。( 2)關于重新定義標識符的作用域規定是什么 ?什么是可見 ?什么是不可見 ?答: 段中:重新定義標識符的作用域規定是外層的變量被隱藏,內層變量是可見的。例如,在下列程序int f
20、un(int x)int a=5:int a=8在函數體內定義了變量 a,初值為5,又在函數體內的一個分程序中重新定義了變量。 ,其初 值為&在內層(即分程序)中可見的是分程序中定義的初值為 8的a,而函數中定義的初值為 5的a 被隱藏了。出了分程序后,外層的 a 又被恢復。這里,可見是可以訪問和操作,不可見是不可以訪問和操作。隱藏是指不可見,但是存在。( 3)什么是局部變量 ?什么是全局變量 ?答:凡是定義在函數體內或分程序內的變量稱為局部變量,局部變量的作用域比較小,或者是函 數級,或者是程序塊級。局部變量一般包含有自動類、寄存器類和內部靜態類以及函數的形參。凡是定義在函數體外的變量稱為全
21、局變量。 全局變量有作用域為整個程序的外部類變量和作用 域為定義它的文件的外部靜態類變量兩種。( 4)什么是自動存儲類變量 ?什么是寄存器存儲類變量 ?答:自動存儲類變量是指那些在函數體內或分程序內定義的,并且被存放在內存的動態存儲區的變量,因此壽命較短。寄存器存儲類變量的作用域和壽命與自動存儲類的相同,它們之間的區別在存放地點不同, 存放在CPU的通用寄存器中的變量稱為寄存器變量,使用這類變量時存取速度要比其他變量快得多。( 6)什么是靜態存儲類變量 ?內部靜態類和外部靜態類變量有何區別 ?答:靜態存儲類變量是使用 static 關鍵字修飾的,并且具有較長壽命的變量。靜態存儲類變量有兩種:一
22、種是作用域與自動存儲類相同的內部靜態變量;另一種是定義在函數體之外,作用域在定義它的文件內,并從定義時起的外部靜態類變量。這兩類變量壽命相同,都被存放在內存的靜態存儲區。靜態存儲類變量與外部存儲類變量都是長壽命的, 它們的區別是作用域不同, 內部靜態存儲類 變量的作用域是函數級或程序塊級的,而外部靜態存儲類變量的作用域是文件級的。簡單地講,內部靜態存儲類變量被定義在函數體內,外部靜態存儲類變量被定義在函數體外。( 7)什么是外部存儲類變量 ?它的定義和說明是一回事嗎 ?答:外部存儲類變量的作用域最大,它的作用域是整個程序,包括該程序的任何一個文件。它 的壽命是長的,被存放在內存靜態存儲區。外部
23、變量被定義在某個文件中,但它在整個程序中都可 見。外部類變量的定義和說明是兩回事。定義外部類變量在函數體外的某個文件中,定義時不加 任何修飾符。在一個程序中,相同名字的外部類變量只能定義一次。說明外部類變量時,可在函數 體外,也可在函數體內,并且前邊要加修飾符 extern ,在一個程序中可以根據需要對同一個外部類 變量說明多次。第5章數組知識點1數組的概念數組是一種用一個名字來標識一組有序且類型相同的數據組成的派生數據類型,它占有一段連續內存空間。數組的特征是(1)數組名;(2)數組各元素的類型;(3)維數(即標識數組元素所需的下標個數 ); 數組大小(即可容納數組元素的個數 )。注意:使用
24、數組之前必須用聲明語句指明數組的上述4個特征。知識點2 一維數組1.定義一維數組也稱向量,它是由具有一個下標的數組元素組成的數組,它的定義形式為:類型數組名大小;其中,方括號為下標運算符,具有最高優先級和從右向左結合性。2初始化初始化表達式按元素順序依次寫在一對花括號內。花括號中的數組元素之間以逗號分隔。初 始化時可以不指定數組的大小,編譯器會根據初始化列表來確定數組的大小。但只給出部分元素初 始化時,就要指定數組大小。 只將部分元素初始化后,其他元素的初始化值隱含為 0。3訪問數組元素訪問數組元素的語法格式為:其中,表達式是非負的整型表達式,也就是數組的下標,數組下標是用來指定所要訪問的 數
25、組中的元素的位置。注意:數組下標是從 0開始的。知識點3二維數組二維數組也稱二級向量,我們可以把二維數組看做一個其元素為一維數組的一維數組。定義二 維數組的一般格式為:mn;二維數組中的每個元素要用兩個下標來表示,前一個為行下標,后一個為列下標。因此,規定 m表示二維數組的行下標的大小,n表示二維數組的列下標的大小。其中,這兩個下標的取值范圍都是從0開始,而不是從1開始的。與一維數組一樣,二維數組也可在定義的同時進行初始化,方法也是類似的。舉例:int a22=1,1,3,2;但需要注意的是,如果對全部元素賦初值,一維數組能根據賦的初值的個數自動計數以確定數組的大小,所以定義的時候可不指定第一
26、維的大小,但第二維的大小是不可以省略的。知識點4字符數組1概念字符數組就是一個字符類型的數組,其中每一個元素存放一個字符。字符數組也稱字符串。C+規定,字符數組的最后一個元素一定是0。例如,字符數組存儲字符串 :” Hello World! ”的語句形式為:char str= ” Hello!world ! ”;但系統會自動在其末尾加一個空白字符0。 也 就是說字符數組存儲一個字符串比實際使用的字符串要多一個字節。2常用字符串函數C+提供了二系列字符串處理函數,這些函數都包含在cstri ng.h頭文件中。(1)strcat(字符串1,字符串2)。此函數是字符串連接函數,它的功能是把兩個字符串
27、連接起來。具體方法是把字符串2連接到字符串I的末端,并將結果存放到字符串1中。注意:存放結果字符串的數組的空間要確保足夠大。兩個字符串連接后,前一個數組最后的字符0 就消失了。(2)strcpy(字符串1,字符串2)。此函數是字符拷貝函數,它的功能是把一個字符串中的字符拷貝到另一個字符串變量中。具體方法是把字符串2中的字符拷貝到字符串1中。注意:要確保存放結果的字符串1的空間足夠大。(3)strcmp(字符串1,字符串2)。此函數是字符串比較函數,它是用來比較字符串的。比較方法是:若兩字符串相等(匹配),返回0( “假”);若字符串1在字典順序上比字符串2大,則返回一個正數;若字符串1在字典順
28、序上比字符串2小,則返回一個負數。(4)strlen(字符串)。此函數是字符串長度函數,它的功能是求字符串的長度。函數的值為字符串中不計 0的字符的個數。(5)strstr(字符串1,字符串2)。此函數是字符串查找函數,它的功能是在一個字符串中查找子串。查找方法毫在字符串1中從左邊開始查找字符串2,若查找成功,返回字符串2在字符串I中第一次出現的位置否則返回NULL若字符串2為”,則返回字符串I。第6章指針與引用知識點1指針與地址指針是一種非常重要的派生數據類型,用它可以構造復雜的數據結構。具有指針類型的變量稱為指針變量,一個指針變量所存儲的信息是一個對象在內存中的地址。通過指針變量可以間接地
29、訪問對象。指針變量聲明的一般格式為:數據類 *變量名其中,數據類型 是指針所指對象的類型,*和&是是指針所使用的兩個特殊運算符。(1) &是取地址運算符(2) *是間接引用運算符,它是獲得對象的值,并且它要求其操作對象是一個指針。在使用任何指針變量之前必須首先給它賦一個所指合法具體對象的內存地址值。知識點2指針運算指針是一種數據類型,應具有無符號整數的值。由于地址本身的特征,也給指針運算帶來一 些限制。一般來說,允許指針有4種運算:(1) 賦值運算。可以將一個個指針所指向的變量地址值賦給它,也可以將一個數組的地值或者一個函數在內存中的入口地址賦給所對應的指針,還可以將一個已被賦值的指針賦給另一個相同類型的指針。int a,pa=&a;女口,指向一維數組int a10,*p;p=a;a=&a0,數組名為地址常量,首元素的地址女口,指向二維數組int b23,(*p)3p=b; b=&b0,數組名為地址常量,首行的地址女口,指向一個字符串char *p= ” hellO ” ; /指向字符串的首字符地址女口,指向多個字符串char *p3=“hello ” , ” world ” , ” am” ;(2) 指針與整數相加、減運算。例如:P+(3) 在一定的條件下,兩個指針可以相減
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 潞安職業技術學院《專業實踐》2023-2024學年第二學期期末試卷
- 山東省青島膠州市2025屆高三畢業班聯考(一)歷史試題含解析
- 批改網考試題及答案
- 幼兒園數學探究活動試題及答案
- 成武中考地理試題及答案
- 施工現場安全標準的建立與實施試題及答案
- 電大競爭法試題及答案
- 現代物理實驗設計的要素試題及答案
- 寶坻幼兒面試題及答案
- 施工現場的安全生產責任制度考核試題及答案
- 養老院九防制度
- 數據融合風控策略
- 2021年修訂版《中華人民共和國安全生產法》考試題庫
- 高溫熔融金屬企業安全知識培訓
- 水利信息化水情監測系統單元工程質量驗收評定表、檢查記錄
- 2024至2030年中國高密度聚乙烯樹脂行業投資前景及策略咨詢研究報告
- 仿制藥與原研藥競爭分析
- 臨時聘用司機合同范本
- 抖音短陪跑合同范本
- HJ 636-2012 水質 總氮的測定 堿性過硫酸鉀消解紫外分光光度法
- 現代風險導向審計在天衡會計師事務所的應用研究
評論
0/150
提交評論