引用專題
0變數名回顧
變數名實質上是一段連續儲存空間的別名,是乙個標號
程式中通過變數來申請並命名記憶體空間
通過變數的名字可以使用儲存空間
問題1:對一段連續的記憶體空間只能取乙個別名嗎?
1、 引用是c++的概念,屬於
c++編譯器對
c的擴充套件
問題:c
中可以編譯通過嗎?
int main()
int a = 0;
int &b = a; //int * const b = &a
b = 11; //*b = 11;
return 0;
結論:請不要用c
的語法考慮
b=11
2、 引用概念
a) 在c++中新增加了引用的概念
b) 引用可以看作乙個已定義變數的別名
c) 引用的語法:type& name = var;
d) 引用做函式引數那?(引用作為函式引數宣告時不進行初始化)
int main()
int a = 10;
int &b = a;
//b是
a的別名,請問
c++編譯器後面做了什麼工作?
b = 11;
cout<<"b--->"printf("b:%d\n", b);
printf("&a:%d\n", &a);
printf("&b:%d\n", &b); //請思考:對同一記憶體空間可以取好幾個名字嗎?
system("pause");
return 0;
練習:應用做函式引數
結論1、 普通引用在宣告時必須用其它的變數進行初始化
i. 為什麼必須初始化,===
》結論:很像乙個唯讀的常量
2、 引用的意義
1)引用作為其它變數的別名而存在,因此在一些場合可以代替指標
2)引用相對於指標來說具有更好的可讀性和實用性
3、 普通引用有自己的空間嗎?
參考第2
點 有。
struct teacer
當使用常量(字面量)對const
引用進行初始化時,
c++編譯器會為常量值分配空間,並將引用名作為這段空間的別名
使用常量對const
引用初始化後將生成乙個唯讀變數
下面開始進入const引用難點
3、 結論const引用
const& 相當於 const int * const e
普通引用 相當於 int *const e1
3、綜合練習
int& j()
static int a = 0;
return a;
int& g()
int a = 0;
return a;
int main()
int a = g();// 正確,因為
a記憶體空間已經釋放,但
a是重新申請的記憶體空間
int& b = g();// 亂碼
a記憶體空間已經釋放,
b指向的記憶體空間是
a(b本質是常指標
) j() = 10;
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("f() = %d\n", f());
system("pause");
return 0;
引用專題講座
引用概念 a 在c 中新增加了引用的概念 b 引用可以看作乙個已定義變數的別名 c 引用的語法 type name var d 引用做函式引數那?引用作為函式引數宣告時不進行初始化,e 普通引用必須要初始化 void main01 b 14 printf a db d a,b a 14,b 14 s...
程式語言專題《開發篇,C 中的引用》
引用的性質 如果在程式中宣告了b是變數a的引用,實際上在記憶體中為b開闢了乙個指標型的儲存單元,在其中存放變數a的位址,輸出引用b時,就輸出b所指向的變數a值,相當於輸出 b。只是不是這麼書寫罷了!引用其實就是乙個指標常量,它的指向不能改變,只能指向乙個指定的變數。所以,引用的本質還是指標,所有的引...
c語言專題
本篇作為乙個引子,領著大家梳理c語言中難點或容易忽視的知識點,知識點以專題形式展開。專題一 結構占用記憶體長度 在linux windows上執行下面一段程式,你能總結出struct記憶體對齊規則嗎?struct ta struct tb struct tc printf size ta d tb ...