C 學習記錄3

2021-09-11 22:25:15 字數 2996 閱讀 3133

十 引用(reference)

4 引用型函式引數

1)可以將引用用於函式的引數,這時形參就是實參的別名,可以通過形參直接修飾實參,同時還可以避免引數傳遞的過程,減小函式的呼叫開銷,提高**的執行效率

2)引用型引數可能會以外修改實參,如果不希望修改實參,可以將形參宣告為常引用,提高傳參效率的同時還可以接收常量型的實參。

5 引用型函式返回值

1)可以將函式的返回型別宣告為引用,避免函式返回值所帶來的記憶體開銷,提高**效率

2)如果函式返回值結果是乙個普通引用,那麼該函式的返回值就是乙個左值

注:不要從函式中返回區域性變數的引用,因為所引用的記憶體會啊在會在函式返回以後被釋放,使用危險,但是可以返回成員變數,靜態變數、全域性變數的引用

5 引用和指標

1)從c語言角度看待引用,引用本質就是指標,但是在c++中推薦使用引用而不是指標。

int i = 100;

int& ri = i;

int* const pi = &i;

ri <=等價=> pi

2)指標定義時可以不做初始化,其指向目標可以初始化以後再修改(指標常量除外),而引用定義時必須初始化,且一旦初始化以後其引用目標不能再改變。

int a,b;

int p;//ok

p = &a;//p指向a

p = &b;//p指向b

------------------

int& r;//error

int& r = a;//r引用a,r只能是a的別名

r = b;//ok,但不是修改引用目標,僅是賦值操作

//下面內容了解

3)可以定義指標的指標(二級指標),但是不能定義引用的指標

int a;

int* p = &a;

int** pp = &p;//ok,pp稱為二級指標

------------------------------

int& r = a;

int&* pr = &r;//error

int* pr = &r;//ok,但是就是乙個普通指標

4)可以定義指標的引用(指標變數的別名),但是不能定義引用的引用

int a;

int* p = &a;

int*& rp = p;//ok,指標的引用

----------------------------

int& r = a;

int&& rr = r;//error,c++中叫右值引用

int& rr = r;//ok,但是就是乙個普通的引用

5)可以定義指標陣列,但是不能定義引用陣列

int a,b,c;

int* parr[3] = ;//ok

int& rarr[3] = ;//error

6)可以陣列引用(陣列的別名)

int arr[3] = ;

int (&rarr)[3] = arr;//ok

7)和函式指標類似,也可以定義函式的引用(函式的別名),其語法特性和函式指標一致。

void func(int a,int b)

int main(void)

volatile修飾變數表示易變的,告訴編譯器 每次在使用該變數時都要小心從記憶體中重新讀取,不要直接使用暫存器中的副本,防止編譯器優化導致的錯誤結果

4)重解釋型別轉換

語法:目標型別變數=reinterpret_cast《目標型別》(源型別變數)

適用場景:

–》任意型別指標或引用之間的顯式轉換

–》在指標和整數之間進行轉換

eg:向物理記憶體0x12345678儲存整數100?

int* paddr =

reinterpret_cast(0x12345678);

*paddr = 100;

小結:來自c++社群建議

1 慎用巨集,可以使用const、enum、inline替換

#define pai 3.14

–》const double pai = 3.14;

#define sleep 0

#define run 1

#define stop 2

–》enum state;

#define max(a,b) ((a)>(b)?(a):(b))

–》inline int max(int a,int b)

2 變數隨用隨宣告同時初始化.

3 動態記憶體管理時盡量使用new/delete替換malloc/free

4 少用void*、指標計算、聯合體、強制轉換.

5 盡量使用string表示字串,少用c風格的char*

十二 類的物件//了解

1 什麼是物件?

萬物皆物件,任何一種事物都可以看作是物件

2 如何描述物件

通過物件的屬性(名詞、數量詞、形容詞)和行為(動詞)來描述。

3 物件導向的程式設計

對自然世界中的物件觀察引入到程式設計實踐中一種方法,這種方法稱為"資料抽象",即描述物件時把細節東西剝離出去,只考慮一般性的,有規律性的,統一性的東西。

4 什麼是類?

類就是將多個物件的共性提取出來定義一種新的資料型別,是對 物件屬性和行為的抽象描述.

現實世界 類 程式設計世界

具體物件–抽象–》屬性/行為–例項化–》具體物件

十三 類的定義和例項化

1 類的一般語法形式

class/struct 類名:繼承方式 基類,…//建構函式

~類名(void){} //析構函式

返回型別 函式名(形參表){}//成員函式

資料型別 變數名;//成員變數

};2 訪問控制限定符

1)public:公有成員,任何位置都可以訪問

2)private:私有成員,只有類的內部才能訪問

3)protected:保護成員(後面講)

注:class定義的類預設的訪問控制屬性是private(私有),而struct定義的類預設的訪問控制屬性是public(公有).

class/struct 類名;

C 學習記錄(3)

1.設計乙個類,求圓的周長 1.1 class 類名 1.2 公共許可權 public 1.3 設計成員屬性 1.3.1 半徑 int m r 1.4 設計成員函式 1.4.1 獲取圓的周長 int calculatezc 1.4.2 獲取圓的半徑 int getr 1.4.3 設定圓的半徑 voi...

Linux學習記錄(3)

ifconfig eth0 位址 ifconfig 檢視當前的位址ip vim文字編輯器 vim 開啟的該檔名 命令列模式 按i進入插入模式 底行模式 wq為儲存 wq 為強制儲存 在底行 set number可以顯示序號 sudo apt get install vim gtk set numbe...

Java學習記錄3

封裝就是把物件的資訊和內部邏輯結構隱藏起來 private default 如果類中成員不使用任何訪問控制符修飾,就稱它是包訪問許可權。使用包訪問許可權修飾的成員可以被相同包下的其他類訪問。protected 如果類成員中使用protected修飾,則這個成員既可以被同乙個包下的其他類訪問,也可以被...