函式探幽(3) 引用(3)

2021-08-10 12:11:52 字數 2249 閱讀 1139

3.1.將引用用於結構

引用非常適合用於結構和類,而引入引用的目的也是為了用於這些型別。

有如下結構定義:

struct free_throws

;//則可以這樣編寫函式原型:

void set_pc(free_throws & ft);

//如果不希望函式修改傳入的機構,可使用const:

void display(const free_throws & ft);

下面通過乙個示例來展示如何將引用用於結構,並展示它一些有趣的特點:

#include

#include

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 three = ;

free_throws four = ;

free_throws five = ;

free_throws team = ;

free_throws dup;

set_pc(one);

display(one);

accumulate(team, one);

display(team);

//有趣的地方①

display(accumulate(team, two));

accumulate(accumulate(team, three), four);

display(team);

dup = accumulate(team, five);

std::cout

<< "displaying team:\n";

display(team);

set_pc(four);

accumulate(dup, five) = four; //②

std::cout

<< "displaying dup after ill advised assignment:\n";

display(dup);

system("pause");

return0;}

void display(const free_throws & ft)

//函式set_pc的**設定成員percent,按值傳遞不可行,所以按引用傳遞

void set_pc(free_throws & ft)

else

}//函式accumulate()接收兩個結構引數,並將第二個結構的成員attempts和made的資料新增到第乙個結構的相應成員中。

free_throws & accumulate(free_throws & target, const free_throws & source)

輸出為:

這樣的操作並不好。

newguy為臨時變數的引用,函式執行完畢後它將不再存在,為避免這種問題,最好返回乙個作為引數傳遞給函式的引用,作為引數的引用將指向呼叫函式使用的資料,因此返回的引用也將指向這些資料。

另一種方法是用new來分配新的儲存空間:

const free_thorws & clone(free_throws & ft)

{ free_throws * pt;

*pt= = ft;

return *pt;

第一條語句建立乙個無名的free_throws結構,並讓指標pt指向該結構,因此*pt就是該結構。上述**似乎會返回該結構,但函式宣告表面,該函式實際上將返回這個結構的引用。

呼叫clone()隱藏了對new的呼叫,這使得以後很容易忘記使用delete來釋放記憶體。

函式探幽(1) 引用(1)

1.引用變數 引用是已定義的變數的別名 另乙個名稱 如 有一變數x,而y作為變數x的引用,則可以交替使用x和y來表示該變數。就像有兩個單詞表示同乙個意思。int cats int tomcats cats 其中,不是位址運算子,而是型別識別符號的一部分。上述宣告允許將cats與tomcats互換 它...

總結3 引用

int a 10 int b a b就是a的別名 b 200 修改變數a中的內容 printf a d n b d n a,b a 與 b 的位址是相同的 在c中相當於以下效果 int const b a b 200 1.1 普通引用 舉例void swap int a,int b 1.2 引用所佔...

函式探幽(二) 引用變數,預設引數

1 預設引數 函式在宣告時可以預先定義預設的形參值。呼叫時若給出實參則用實參初始化形參,如果沒有給出實參則採用預先定義的預設形參值。假設有乙個名為left 的函式,它將字串和n作為引數,並返回該字串的前n個字元。更準確地說,該函式返回乙個指標,該指標指向由原始字串被選中的部分組成的字串。例如,函式呼...