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


值傳遞方式:

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);

}

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM