目錄
指標的引用
常量引用
使用變數初始化const引用
使用字面量常量初始化const引用
綜合案例
常量引用總結
總體**
關於指標的引用,類似於c語言中的二級指標的使用,但是,引用幫程式設計師把取位址的過程給自動完成的,所以,實現同樣的功能,乙個是用二級指標,乙個是用指標的引用,後者更簡便,也更高效。
先設定乙個結構體:
//
struct teacher
;
再設定兩個函式,乙個是使用的二級指標,乙個是使用的指標的引用:
//在被呼叫函式 獲取資源
int getteacher(teacher **p)
tmp = (teacher *)malloc(sizeof(teacher));
if (tmp == null)
tmp->age = 33;
// p是實參的位址 *實參的位址 去間接的修改實參的值
*p = tmp;
}
指標的引用:
//指標的引用 做函式引數
int getteacher2(teacher* &myp)
myp->age = 36;
}
經過對比,可以發現,通過二級指標的方式來控制記憶體時,過程繁瑣,需要建立輔助指標進行實現,而設定指標的引用,直接就可以完成想要實現的功能。
引用分為普通引用和常量引用,之前的都是普通引用,接下來介紹一下常量引用。比如,這就算是普通引用:
int a = 10;
int &b = a;
接下來看常引用:
//常引用
int x = 20;
const int &y = x; //常引用 是 讓變數 引用唯讀屬性 不能通過y去修改x了
//y = 21;
常引用的作用是:讓變數擁有唯讀屬性,(在指標作函式引數的時候這個屬性作用比較大,即不能通過y去修改x了)。
常量引用的初始化,分為兩種情況,第一種,是用變數初始化來進行常量引用,會單獨分配記憶體空間(即上面舉得那個例子就是):
int x1 = 30;
const int &y1 = x1; //用x1變數去初始化 常引用
第二種,用常量(即字面量)去初始化:
const int a = 40; //c++編譯器把a放在符號表中
int &m = 41; //普通引用 引用乙個字面量 請問字面量有沒有記憶體位址
//引用 就是給記憶體取多個門牌號 (多個別名)
//printf("&40:%d \n", &40);
普通引用,引用乙個字面量 是沒有記憶體位址的,即「41」沒有記憶體位址(是直接放在符號表中的),而引用就是給記憶體取別名,那「41」沒有記憶體,引用還去啥別名呢?啥也取不了。所以,以上是編譯不通過的,要改進的方式,只有:
const int a = 40; //c++編譯器把a放在符號表中
const int &m = 43; //c++編譯器 會 分配記憶體空間
在其前加個"const"就可以了,(這也是const和引用在一起的乙個特殊點!)一用const,編譯器會給m分配乙個記憶體空間,並將這個m指向"43",但"43"依舊沒記憶體空間。
字面量沒有記憶體空間,故沒有存放的記憶體位址,即使存在,也是**區中。這是在c++中乙個和c不一樣的地方。
//
struct teacher
;
常量引用作函式引數:
//void printteacher(const teacher * const myt)
void printteacher(const teacher &myt)
常量引用讓變數擁有唯讀屬性,即寫了就不能讓輕易的改。
void main()
;//在被呼叫函式 獲取資源
int getteacher(teacher **p)
tmp = (teacher *)malloc(sizeof(teacher));
if (tmp == null)
tmp->age = 33;
// p是實參的位址 *實參的位址 去間接的修改實參的值
*p = tmp;
}//指標的引用 做函式引數
int getteacher2(teacher* &myp)
myp->age = 36;
}void freeteacher(teacher *pt1)
free(pt1);
}void main1201()
//2> 用字面量 初始化 常量引用
cout<<"hello..."
return ;}//
struct teacher
;//void printteacher(const teacher * const myt)
void printteacher(const teacher &myt)
void main()
011 指標的引用
指標的引用 if 1 struct teacher int getteacher teacher p teacher tmp tmp teacher malloc sizeof teacher 1 if tmp null tmp age 1111 p tmp p就像一把鑰匙,通過位址去開啟一扇門,p...
7 4 指標和引用
7.4.1指標的好處 1.可以動態分配記憶體。2.對多個相似變數進行一般訪問。3.為動態資料結構,尤其是樹和鍊錶提供支援 4.遍歷陣列,解析字串。5.高效的按引用複製陣列和結構。7.4.2 引用還是指標 1.指標本質是儲存位址的變數,指標則是 從一而終 的別名,且不能為空 2.作為引數傳遞,二者不同...
5 指標 引用的區別
函式傳值的三種方式 傳值 傳引用 傳指標 相同點 都是位址的概念 指標指向一塊記憶體,它的內容是所指記憶體的位址 引用是某塊記憶體的別名。區別 1.指標是乙個實體 在棧空間有自己的記憶體空間 而引用僅是個別名 不佔記憶體空間 2.引用使用時無需解引用 指標需要解引用 3.引用只能在定義時被初始化一次...