函數的形參(普通形參、指標形參、引用形參)__函數

來源:互聯網
上載者:User
 

int n=10;

add1(n);

1、普通形參

void add1(int v1)
{
v1+=1;/對實參無影響
}

這是最普通的形參方式,形參僅僅為實參的一個副本,對形參的任何操作不會修改實參的值。例中對v1的操作只是修改了實參的一個副本。實參不變


int *p=&n;

add2(p);//p為指向n的指標

或者直接add2(&n)

2、指標形參

void add2(int *p)
{
*p+=1;//實參才會變
p+=1;//對實參無影響
(*p)++;//實參才會變

}

使用指標做為函數的形參,只有對指標所指對象進行的操作才會改變實參的值。要實現改變實參,還有一種更安全更自然的方法-引用形參。

//在執行add2(&n)時,系統在記憶體配置表裡增加了一行add2中的p”,其地址為新地址,值為&n。操作*p,即是在操作n了。有點類似引用,*p即為n的一個別名

int a=1,b=2;

swap(a,b);

3、引用形參

void swap(int &a,int &b)
{
int temp=a;
a=b; //會改變實參的值
b=temp; //會改變實參的值
}

引用形參直接關聯到其所綁定的對象,而非這些對象的副本。 所以這種方法可以修改實參的值,而且更加直觀。

函數的形參和實參具有以下特點:

1. 形參變數只有在被調用時才分配記憶體單元,在調用結束時,即刻釋放所分配的記憶體單元。因此,形參只有在函數內部有效。函數調用結束返回主調函數後則不能再使用該形參變數。
2. 實參可以是常量、變數、運算式、函數等,無論實參是何種類型的量,在進行函數調用時,它們都必須具有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使實參獲得確定值。
3. 實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不符”的錯誤。
4. 函數調用中發生的資料傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。 因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。故需要手動修改才可。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.