本文小編為大家詳細介紹“C++中函數傳遞的方式是什么”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“C++中函數傳遞的方式是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
成都網絡公司-成都網站建設公司創(chuàng)新互聯建站10多年經驗成就非凡,專業(yè)從事網站設計、網站建設,成都網頁設計,成都網頁制作,軟文營銷,一元廣告等。10多年來已成功提供全面的成都網站建設方案,打造行業(yè)特色的成都網站建設案例,建站熱線:18980820575,我們期待您的來電!
值傳遞:
void fun(int x)
{
x += 5; //修改的只是y在棧中copy x,x只是y的一個副本,在內存中重新開辟的
一塊臨時空間把y的值送給了x;這樣也增加了程序運行的時間,降低了程序的效率。}
void main(void)
{
int y = 0;
fun(y);
cout<<\"y = \"<
}
指針傳遞:
void fun(int *x) { *x += 5; //修改的是指針x指向的內存單元值 } void main(void) { int y = 0; fun(&y); cout<<<<\"y = \"<引用傳遞:
void fun(int &x) { x += 5; //修改的是x引用的對象值 &x = y; } void main(void) { int y = 0; fun(y); cout<<<<\"y = \"<看了C++函數傳遞后我們繼續(xù)來談“const只能用于修飾輸入參數”的情況。
C++可變參數表基本內容探討
各個C++內存區(qū)域功能對比
C++ static不同的應用方式
C++輸入輸出漢字具體應用技巧分享
C++地址運算符相關內容詳解
當輸入參數用“值傳遞”方式時,我們不需要加const修飾,因為用值傳遞時,函數將自動用實際參數的拷貝初始化形式參數,當在函數體內改變形式參數時,改變的也只是棧上的拷貝而不是實際參數。
但要注意的是,當輸入參數為ADT/UDT(用戶自定義類型和抽象數據類型)時,應該將“值傳遞”改為“const &傳遞”,目的可以提高效率。
例如:
void fun(A a); //效率底。函數體內產生A類型的臨時對象用于復制參數 a,但是臨時對象的構造、復制、析構過程都將消耗時間。
void fun(A const &a); //提高效率。用“引用傳遞”不需要產生臨時對象,省了臨時對象的構造、復制、析構過程消耗的時間。但光用引用有可能改變a,所以加const
當輸入參數用C++函數傳遞中的“指針傳遞”方式時,加const修飾可防止意外修改指針指向的內存單元,起到保護作用。
例如:
void funstrcopy(char *strdest,const char *strsrc) //任何改變strsrc指向的內存單元,編譯器都將報錯
些時保護了指針的內存單元,也可以保護指針本身,防止其地址改變。
例如:
void funstrcopy(char *strdest,const char *const strsrc)讀到這里,這篇“C++中函數傳遞的方式是什么”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。
網站名稱:C++中函數傳遞的方式是什么
瀏覽路徑:http://weahome.cn/article/pdjjdp.html