C 引用變數

2021-09-12 07:11:11 字數 3275 閱讀 2372

引用是已定義的變數的別名。通過將引用變數用作引數,函式將使用原始資料,而不是其副本。

int rats;

int& rodents = rats;

int& 指的是指向int的引用。

#include

using

namespace std;

intmain()

從以上**可知,a和b的值和位址表都相同,將b++將影響這兩個變數。

宣告引用時必須將其初始化,而指標可以先宣告再賦值。以下**是絕對不允許的。

int a;

int& b;

b = a;

按引用傳遞允許被呼叫的函式能夠訪問呼叫函式中的變數。

下面的code展示了按引用和按指標傳遞能夠完成交換兩個變數的值,而按值傳遞是不可以的。

#include

using

namespace std;

void

swapr

(int

& a,

int& b)

;void

(int

* p,

int* q)

;void

swapv

(int a,

int b)

;int

main()

void

swapr

(int

& a,

int& b)

void

(int

* p,

int* q)

void

swapv

(int a,

int b)

引用傳遞會改變傳遞引數的值

#include

using

namespace std;

double

cube

(double a)

;double

refcube

(double

& ra)

;int

main()

double

cube

(double a)

double

refcube

(double

& ra)

如果使用按引用傳遞值時不想讓函式改變傳遞的值,可以使用const宣告:

double

refcube

(const

double

& ra)

;

這樣當ra的值被更改時,編譯器在會在檢查語法時就報錯。

注意不能將表示式傳遞給接受引用引數的函式。如

double z =

refcube

(x +3)

;

左值:可被引用的資料物件。常規變數和const變數都可以視為左值,因為可以通過位址訪問它們。前者屬於可以修改的左值,後者反之。

非左值:字面常量和包含多項的表示式。

對於該函式:

double

refcube

(double

& ra)

如果傳遞的是常量或表示式,這些情況下編譯器將生成乙個臨時匿名變數,並讓ra指向它,這種臨時變數只在函式呼叫期間存在,此後編譯器可以隨意將其刪除。

refcube

(7.0);

double side =

3.0;

refcube

(side +

1.0)

;

若型別不正確,也不能通過編譯器的校驗:

long edge =5l;

refcube

(edge)

;

因為double引用不能指向long。

乙個按引用傳遞結構的例子:

#include

#include

using

namespace std;

struct free_throws

;void

display

(const free_throws& ft)

;void

set_pc

(free_throws& ft)

;free_throws&

accumulate

(free_throws& target,

const free_throws& source)

;int

main()

; free_throws two =

; free_throws team =

;set_pc

(one)

;display

(one)

;accumulate

(team, one)

;display

(team)

;display

(accumulate

(team, two));

}//這個函式也可以按值傳遞結構,但與賦值原始結構的拷貝相比,使用引用可以節省時間和記憶體

void

display

(const free_throws& ft)

void

set_pc

(free_throws& ft)

else

}//返回型別是引用

free_throws&

accumulate

(free_throws& target,

const free_throws& source)

比如這條語句

dup =

accumulate

(team, five)

;

如果accumulate返回乙個結構,那麼將把整個結構複製到乙個臨時位置,再將這個拷貝複製給dup;但在返回值為引用時,將直接把team複製到dup,效率更高!

應該避免返回函式終止時不再存在的記憶體單元引用。應避免如編寫下述**:

const free_throws&

clone

(free_throws& ft)

C 引用變數( )

1 建立引用變數 1 必須在宣告引用變數時進行初始化 int rat int rodent rat 可以通過初始化宣告來設定引用,但不能通過賦值來設定。nt rat int rodent rat int b 50 rodent b 這裡rodent依然是rat變數的別名,只是現在rat和rodent...

C 引用變數

一,引用變數 c 新增了一種復合型別 引用變數。引用是已定義變數的別名,使用引用變數的主要的用途是作為函式的引數。通過將引用變數用作引數,通過形參就可以對原始的資料進行修改。這樣除指標之外,引用也為函式處理class與struct提供了一種非常方便的途徑。二,宣告引用變數 c與c 使用 來獲取變數的...

C 引用變數

首先說一下,引用變數是什麼?引用變數是已定義的變數的別名 即另乙個名字 舉個例子 int x 100 int y x 現在y就相當於x的小名,他們表示的都是乙個東西。就像你叫張三,小名土豆。張三和土豆都是你。說完了引用變數是什麼再來說一下它的用途。引用變數主要的作用是作為函式的引數,來使得函式中的變...