c 入門之引用

2022-05-02 16:30:10 字數 2064 閱讀 1020

引用通常被用在函式形參傳遞的過程中。一般的引數傳遞的過程:將實參進行拷貝,函式中都是對拷貝的變數進行操作,而不是對原變數進行操作。但很多情況下,我們都希望對原變數進行操作.(比如交換兩個變數的數值)。下面先給出一段**:

1 #include "

iostream

"2 #include "

string"3

using std::string;4

using

std::cout;

5struct

free_throws;

1112

void display(const free_throws &ft);

13void set_pc(free_throws &ft);

14 free_throws& accmulate(free_throws &target, const free_throws &source);

1516

intmain()17;

19 free_throws two;

20 free_throws three;

21 free_throws four;

22 free_throws five;

23 free_throws team;

24free_throws dup;

25set_pc(one);

26display(one);

27accmulate(team, one);

28display(team);

29display(accmulate(team, two));

30accmulate(accmulate(team, three), four);

31display(team);

32 system("

pause");

33return0;

34}3536

void set_pc(free_throws &ft)

3743

void display(const free_throws &ft)

4450

51 free_throws &accmulate(free_throws &target, const free_throws &source)

52

上述**:描述了引用變數在結構體中的應用,實際上,應用引用變數的地方多在較為複雜的資料結構中。

1.set_pc()的功能是修改結構體成員值(如果我們不採用引用變數,那麼修改的將是拷貝的變數,而非原變數,當然我們也可以採用指標的方式)

2.display()的作用是顯示結構體成員值,需要注意的是:這個程式的功能是顯示結構體成員的值,也就是不對結構體成員作修改。因此引入了const 限定。const表明如果我們試圖在函式函式中修改形參(這裡是ft,也就是被傳遞的結構體,如one),那麼就會出錯。.

關於const的基本性質和原理不再贅述。說明一點:當要被傳遞的引數作為右值時(不被修改),為了程式的健壯性,通常我們會將引數設定為const型別

3 free_throws &accmulate(par1,par2)函式中的par1是被修改的,而par2是右值,因此定義成了const。但這個函式有趣的地方在於,幫我們重新認識了函式:思考什麼是函式?

從組成結構上講,函式包括了這幾個點:函式名(函式的入口位址),函式形參型別及個數,函式的返回值型別(函式名前面的東西)。當每次遇到函式的時候,我們腦海裡要形成對這三個屬性的認識:函式名代表什麼,函式的形參可以是什麼型別?可以有多少個?返回值是什麼型別??可以有多少個?

我們關注這個函式的返回值,發現,並不是我們熟悉的int ,char ,double ,甚至是指標比如int *。這裡返回的是結構體,確切的說是結構體引用。比如我們說指標型別的時候,我們會說int*.因此,我們需要將引用看成乙個型別。這裡是structname  &型別。而我們發現,target變數自身就是structname  &型別。我們發現,這是吻合的,其實仔細思考原來的,int ,char ,double 甚至指標,函式中被返回的變數的型別。和函式名前的返回型別是一致的!!!

4  引用必須在定義的時候進行初始化,函式傳參也屬於這一種情況。

C 入門 引用詳解

1.引用作為其他變數的別名而存在,因此在一些場合可以代替指標 2.引用相對於指標來說具有更好的可讀性和實用性 3.引用在c 內部實現就是乙個常量指標 const p int a int const a include stdafx.h include include string using nam...

c 入門 引用變數

符合型別 引用變數 引用是以定義變數的別名,常用在作為函式的形參。可直接作用於變數的原始資料,而不是其拷貝。宣告引用 c 使用 來宣告引用。int rats int rodents rats 指標與引用的區別 int rodents rats int prats rats rodents與 prat...

C 之引用揭秘

測試 第二條彙編指令將8這個值儲存到變數a在棧中的空間。第三條指令將變數a的位址放到暫存器eax中。可以看到,eax的值為0x29fefc,這個位址為虛擬位址空間的位址。游標處彙編指令將該值壓入棧中,作為呼叫函式fun 的引數 順表提一下,為什麼指標總是4位元組大小,32位機器,記憶體最大4g,32...