c 引用專題

2021-08-01 02:28:32 字數 1757 閱讀 4152

引用專題

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 ...