C 知識點總結

2021-12-21 16:43:28 字數 4739 閱讀 4895

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的值而已.自增自減運算 變數 變數,變數...