C 第5課 引用的本質分析

2021-10-02 09:14:48 字數 2615 閱讀 8306

本文學習自 狄泰軟體學院 唐佐林老師的 c++課程

實驗1 :可以使用變數和常量初始化const引用變數, const引用讓變數擁有唯讀屬性

注意1 :不可以直接用字面常量初始化 引用變數,但是可以初始化 const引用變數

注意2 : const引用讓變數擁有唯讀屬性,如

int a = 4;

const int& b = a;

此時只是變數b具有唯讀屬性,變數a屬性不變。

實驗2 :引用的本質,是乙個指標常量

實驗3 :引用的本質,是乙個指標常量

實驗4:引用的使用-千萬不要返回區域性變數發引用

注意:引用就是變數本身,內部本質實現是乙個指標常量,c++中引入引用的目的是代替指標。

實驗1 :可以使用變數和常量初始化const引用變數, const引用讓變數擁有唯讀屬性

注意 :不可以直接用字面常量初始化 引用變數,但是可以初始化 const引用變數

結論;如果說我們想要使乙個已經存在的變數擁有唯讀屬性,變成乙個唯讀變數,在c++中只需要定義乙個const引用就可以了。

實驗2 :引用的本質,是乙個指標常量

#include struct tref

;int main(int argc, char *ar**)

;

//1 ,引用就是變數本身,求 char & 的大小也就是求它對應的變數的大小。

printf("sizeof(char&) = %d\n", sizeof(char&));

// sizeof(rc) == sizeof(c) = 1

printf("sizeof(rc) = %d\n", sizeof(rc));

//4 ??? 指標大小為4

實驗3 :引用的本質,是乙個指標常量

#include struct tref

;int main(int argc, char* ar**)

; printf("sizeof(r) = %d\n", sizeof(r));

printf("sizeof(r.before) = %d\n", sizeof(r.before));

printf("sizeof(r.after) = %d\n", sizeof(r.after));

printf("&r.before = %p\n", &r.before); //應用的本質是指標常量 ,指標的位址

printf("&r.after = %p\n", &r.after); //應用的本質是指標常量 ,指標的位址

實驗4:引用的使用-千萬不要返回區域性變數發引用

#include //注意 引用不要返區域性變數的引用

int& demo() //int* const 返回值是指標 即位址

int& func() //int* const 返回值是指標 即位址

int main(int argc, char* ar**)

C 引用的本質分析

事物的難度遠遠低於對事物的恐懼!下邊來看看乙個老生常談的交換函式 include using namespace std 引用方式 void swap1 int a,int b 注意 函式引數中的引用不需要初始化 指標方式 void swap2 int a,int b int main int ar...

C 5 引用的本質分析

swap 函式的對比 指標版本 void swap int a,int b 引用版本 注意 函式中的引用行參不需要進行初始化!void swap int a,int b 函式對比分析 引用如果作為函式的形參時,不需要進行初始 初始化發生在呼叫的時候。指標版本要交換a和b的值,傳進去的是a和b的位址,...

C語言高階 第26課 指標的本質分析

程式中的變數只是一段儲存空間的別名,那麼是不是必須通過這個別名才能訪問這段儲存空間?號的意義 在指標宣告時,號表示所表明的變數為指標 在指標使用時,號表示取指標所指向的記憶體空間中的值。號類似於一把鑰匙,通過這把鑰匙可以開啟記憶體,讀取記憶體中的值。int i 0 int j 0 int p i 指...