c++的特點:1.支援抽象資料型別
2.多型性,乙個介面,多重演算法,支援早期聯編和滯後聯編
3.繼承性,保證了**復用,支援分類的概念
乙個c++程式由乙個或多個函式構成,並且在這些函式中只有乙個主函式main,它是程式執行的入口。
c++程式嚴格區別字母的大小寫。
c++程式中的字元:(字元單位:0x00-0x7f範圍內定義的asc||碼所表示的西文字元,每個asc||碼字元占用1個位元組)
1. 識別符號:標準c++識別符號由字母、下劃線和數字組成,且第乙個字元不能為數字,長度一般不超過32個,檔案只識別前8個字元。
識別符號大小寫敏感。自定義識別符號不提倡以下劃線開始。
2. 關鍵字:又稱保留字,具有特定含義。
c++的基本資料型別:
c++的資料型別分為兩大類:基本資料型別和匯出資料型別。
基本資料型別:字元型(char)、整型(int)、單精度實型(float)、雙精度實型(double)、布林型(bool)和空型別(void)。
float可以儲存7位有效數字,double可以儲存15位有效數字。
匯出資料型別:陣列、指標、引用、結構體、共用體、列舉和類。
邏輯型也稱布林型,用來處理邏輯量。取值只有true(真)和false(假)兩個,佔1個位元組,將非0值解釋為真,將0值解釋為假。
變數與常量:(c++中有字串常量,沒有字串變數。)
變數三要素:變數名、變數的記憶體空間和變數的值。
定義格式:資料型別變數名
變數必須先定義後使用,變數確定型別後,編譯器可以對變數參與的運算做合法性檢查。
變數賦值:
1:變數定義後,用賦值語句賦初值。
2:在定義變數時直接對變數賦初值,稱為變數的初始化。
注意:不能對文字常量賦值,不能對表示式賦值,常量不能重新賦值。
文字常量:整型、實型、字元型、字串型。(儲存在**區,不是通過位址進行訪問。)實型常量在記憶體中以浮點形式存在。
符號常量:(const)
符號常量在使用前一定要首先宣告。
形式為:const 資料型別說明符常量名=常量值;
符號常量在宣告時一定要賦初值,而在程式中間不能改變其值。
運算子和表示式:
算數運算子:對於除運算子,當兩個運算量均為整數時為整除,商取整數,當至少有乙個運算量為實數時,則為普通除。
對於求餘運算,要求運算量必須為整型資料。
注意:計算時注意溢位問題!!!
自增、自減運算子:
i++表示先用i的值參加運算,然後再將變數i的值加1.
++i表示先將變數i的值加1,然後再參加其他運算。
自增、自減運算子只能作用於變數,不能用於其他。
關係運算子(<、<=、>、>=、==、!=):
關係運算子的優先順序比算數運算子的優先順序低,但比賦值運算子的優先順序
高 。參加關係運算的兩個運算元可以是任意型別的資料。當比較結果成立時,結
果為true;當比較結果不成立時,結果為false.
邏輯運算子
非運算子(!)的優先順序比算數、關係運算子的優先順序高。與運算子(&&)
和或運算子(||)的優先順序比算數關係運算子的優先順序低,但比賦值運算子
級高。&&和||運算子具有短路的特性:對於&&,執行時先對第乙個運算元求值,
如果其值為false,則不再對第二個運算元求值;對於||,執行時先對第乙個
運算元求值,如果其值為true,則不再對第二個運算元求值。
注意:1.在判斷運算量的真假時,c++規定任何非0值表示true,0值表示
false.
在計算邏輯表示式時,從左向右掃瞄表示式,一旦能確定表示式的值,就不繼續進行計算。
位運算子:對整型資料的運算(二進位制),符號位也參與運算。
1.按位與(&):對應位都是1,則結果為1,否則為0.
2.按位或(|):乙個數的對應位為1,則結果為1;若兩個數的對應位都是0,結果是0.
3.按位異或(^):對應位不同結果為1,否則為0.
4.按位取反(~):0變1,1變0.
函式: 宣告函式時,形參表只要包含完整的型別資訊即可,形參名可以省略。
函式引數的傳遞方式:
c++支援兩種引數傳遞方式:值傳遞和引用傳遞。
值傳遞是指當發生函式呼叫時,給形參分配記憶體空間,並用實參來初始化形參(直接將實參的值傳遞給形參)。這一過程是值的單向傳遞過程,一旦形參獲得了值便與實參脫離關係,此後無論形參怎麼改變,都不會影響實參。
引用傳遞是一種特殊型別的變數,可以被認為是另乙個變數的別名,通過引用名與通過被引用的變數名訪問變數的效果是一樣的。
注意:宣告乙個引用時,必須同時對它進行初始化,使它指向乙個已存在的物件,一旦乙個引用被初始化後,就不能改為指向其他物件。
引用可以作為形參,成為引用傳遞。
內聯函式
在編譯時將函式體潛入在每個呼叫處。內聯函式應該是比較簡單的函式,結構簡單,語句少。
形式:inline 型別說明符函式名(含型別說明的形參表)
預設引數:
c++允許定義具有預設實參的函式。這樣在函式呼叫時,實參與形參的個數不同,預設引數也稱為預設引數。如果在函式呼叫中省略了函式實參,將把函式的預設值賦給函式形參。
預設值的設定通常是在函式原型中給出。如果在程式中沒有給出函式原型,那麼預設值可以在定義函式時給出。函式的預設值應該在函式名出現最早的地方給出。
注意:在函式呼叫中,第乙個引數用預設值,而第二個引數用指定值是錯誤的,如果乙個引數具有預設值,那麼它右邊的引數都要有預設值。形參不一定都要有預設值。
引數的預設值必須是常量,不能是變數。
函式的返回值:
注意:1.)乙個函式可以有多個引數,但乙個函式最多只能返回乙個值,如果要從乙個函式返回多個值,必須通過「打包」的方式,將這些值當作乙個整體來處理。
2.)如果乙個函式的返回值不是void,那麼該函式必須包含return語句。
函式遞迴呼叫:對同乙個函式的多次不同呼叫中,編譯器會為函式的形參和區域性變數分配不同的空間,他們互不影響。
函式過載:
兩個以上的函式,具有相同的函式名,但是形參的個數或者型別不同,編譯器根據實參和形參的型別及個數的最佳匹配,自動確定用哪個函式,這就是函式過載。
過載函式的形參必須不同:個數不同或型別不同。編譯器不以形參名和返回值來區分函式。不要將不同功能的函式定義為過載函式。
區域性變數和全域性變數:
記憶體儲存區的分布:1.)**區:存放程式的可執行**。
2.)全域性資料區:儲存靜態變數和一般的全域性變數,自動初始化為0。
3.)棧區(一種先進後出的結構):存放區域性變數 ,包括函式的形參、函式內定義的一般變數。分配棧區時,不處理原記憶體中的值。如果對變數不初始化,那麼變數的初值不確定。
4.)自由儲存的堆區:存放與指標有關的動態資料,分配儲存區時,也不清零。
區域性變數:區域性變數包括函式的形參、函式內定義的變數、復合語句內定義的變數。由於區域性變數具有一定的範圍性,所以不同的函式可以定義同名的變數,但這些變數之間不會相互影響。
全域性變數:全域性變數存放在全域性資料區,如果定義時沒有給出初值,則自動初始化為0.全域性變數可定義在函式外的任何乙個位置,其有效範圍是從變數定義處開始到檔案結束,都可以訪問。
如果程式的某個函式修改了全域性變數,則其他函式都可見修改後的結果。
如果乙個函式內的區域性變數和全域性變數同名,那麼對於函式來說只有區域性變數是可見的,這稱為全域性變數的隱藏。要引用同名的被隱藏的全域性變數,必須加上「::」
區域性變數與棧:當函式呼叫時,系統借助棧實現函式呼叫和區域性變數的空間分配。
變數的儲存類別:auto(自動儲存變數);register(暫存器變數)採用register修飾的變數將盡可能的儲存在暫存器中,以提高程式的執行速度;register只能修飾區域性的int型或char型變數,而不能修飾其他型別的變數;static(靜態變數)初始化僅進行一次;extern擴充套件全域性變數的作用域。
將全域性變數的作用域擴充套件到定義之前:在引用之前用關鍵字extern對該變數進行引用性說明。此宣告不同於全域性變數的定義,採用extern宣告變數,應確保變數已經在其他地方定義過。
用extern宣告變數時,型別名可以省略。
將全域性變數的作用域擴充套件到其他檔案:靜態全域性變數不能採用extern進行作用域擴充套件。
類:定義類的語法形式: 例子:
class 類名稱class clock
publicpublic:
外部介面void settime(int newh,int newm,int news);
protectedprivate:
保護型成員int hour,minute,second;
privatepublic
私有成員void showtime();
};//注意分號
注意:在類中可以只宣告函式的原型,函式的實現(即函式體)可以在類外定義
類的成員包括資料成員和函式成員。
對類成員訪問許可權的控制屬性有:公有屬性(public),私有屬性(private),保護屬性(protected)。公有型別成員定義了類的外部介面,在類外只能訪問類的公有成員;私有成員只能被本類的成員函式訪問,來自類外部的任何訪問都是非法的,如果私有成員緊接著類名稱,則關鍵字private可以省略。
一般情況下,乙個類的資料成員都應該宣告為私有成員。
在類的定義中,具有不同訪問屬性的成員,可以按任意順序出現。修飾訪問屬性的關鍵字也可以多次出現,但是乙個成員只能有一種訪問屬性。在書寫時通常習慣將公有型別放在最前面。
宣告物件:類名物件名;
注意:物件所佔據的記憶體空間只是用於存放資料成員,函式成員不在每乙個物件中儲存副本,每個函式的**在記憶體只能夠只佔據乙份空間
訪問資料成員:物件名.資料成員名
呼叫函式成員:物件名.函式成員名(參數列)
C 知識點總結
2 類是乙個型別,本身不佔空間,物件佔空間。2.建構函式的作用 分配空間並且初始化。物件要分配空間,必須呼叫建構函式,如果無建構函式,系統預設提供乙個無參的建構函式,其之分配空間,並未賦初值 建構函式可以過載,但不能有返回值。3.全域性物件 主函式之前分配空間,主函式之後釋放空間 即主函式之前可以執...
總結 C知識點
資料型別 值型別 基本資料型別 在c 現的簡單型別共享一些特性。第一,它們都是.net系統型別的別名。第二,由簡單型別組成的常量表示式僅在編譯時而不是執行時受檢測。最後,簡單型別可以按字面被初始化。以下為c 簡單型別歸類 整型,布林型 字元型 整型的一種特殊情況 浮點型 小數型 列舉 乙個由一指定常...
C語言知識點總結
char字元型 用於存放字元 變數賦值,初始化 int a 3 定義的同時初始化 a 6 9 定義後在程式中進行賦值 變數的值 只有在賦值操作時才會被改變,即將其放在等號左邊時才會改變它的值,或自增自減操作 a 5,a a 像a 3並未改變a的值,只是使用了a的值而已.自增自減運算 變數 變數,變數...