C++函數調用方式(實參形參)

來源:互聯網
上載者:User

值傳遞方式:

1、普通調用,形參與實參為同樣的類型

fun(int i)()

fun(Student stud)

()

main()

{  

fun(1);

Student s1;  

fun1(s1);

}

在函數中可以修改形參的值,但不能改變其對應的實參的值(形參的值變化無法傳送到實參) 原因:在函數調用時將建立一個新的對象,是實參對象的拷貝,實參與形參分別佔有不同的儲存空間,無論形參是否修改都不會改變實參的值。 這種形式的虛實結合,會產生實參的拷貝。當傳遞的對象較大時,時間開銷和空間開銷都比較大。

2、使用指標作為函數參數

fun(int * i)

{}

fun(Student * stud)

{}

main()

{  

int i = 1;  

fun(&i);  

Student s1;  

fun1(&s1);

}

其實質也是值傳遞方式,只是傳遞的值是一個地址,實參將地址傳遞給形參,虛實結合後,實參與形參指向同樣的地址。 其操作的都是同一個對象。 虛實結合時,也會產生實參的拷貝,為形參分配記憶體,用來存放指標值(即地址)

2、引用傳遞方式

1、用引用作為函數參數

fun(int& i){}

fun(Student& stud){}

main()

{

 int i = 1;  

fun(i);  

Student s1;

 fun1(s1);

}

不會為形參分配儲存空間(常稱為建立實參的一個拷貝),而是把實參的地址傳遞給形參(引用名),引用名也指向實參變數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.