欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++形參與實(shí)參的區(qū)別實(shí)例解析

 更新時間:2014年07月21日 10:49:35   投稿:shichen2014  
這篇文章主要介紹了C++形參與實(shí)參的區(qū)別實(shí)例解析,需要的朋友可以參考下

本文以實(shí)例闡述了C++中形參與實(shí)參的區(qū)別,有助于讀者加深對于C++形參與實(shí)參的認(rèn)識。

形參出現(xiàn)在函數(shù)定義中,在整個函數(shù)體內(nèi)都可以使用, 離開該函數(shù)則不能使用。實(shí)參出現(xiàn)在主調(diào)函數(shù)中,進(jìn)入被調(diào)函數(shù)后,實(shí)參變量也不能使用。 形參和實(shí)參的功能是作數(shù)據(jù)傳送。發(fā)生函數(shù)調(diào)用時, 主調(diào)函數(shù)把實(shí)參的值傳送給被調(diào)函數(shù)的形參從而實(shí)現(xiàn)主調(diào)函數(shù)向被調(diào)函數(shù)的數(shù)據(jù)傳送。

1.形參變量只有在被調(diào)用時才分配內(nèi)存單元,在調(diào)用結(jié)束時, 即刻釋放所分配的內(nèi)存單元。因此,形參只有在函數(shù)內(nèi)部有效。 函數(shù)調(diào)用結(jié)束返回主調(diào)函數(shù)后則不能再使用該形參變量。

2.實(shí)參可以是常量、變量、表達(dá)式、函數(shù)等, 無論實(shí)參是何種類型的量,在進(jìn)行函數(shù)調(diào)用時,它們都必須具有確定的值, 以便把這些值傳送給形參。 因此應(yīng)預(yù)先用賦值,輸入等辦法使實(shí)參獲得確定值。

3.實(shí)參和形參在數(shù)量上,類型上,順序上應(yīng)嚴(yán)格一致, 否則會發(fā)生“類型不匹配”的錯誤。

4.函數(shù)調(diào)用中發(fā)生的數(shù)據(jù)傳送是單向的。 即只能把實(shí)參的值傳送給形參,而不能把形參的值反向地傳送給實(shí)參。 因此在函數(shù)調(diào)用過程中,形參的值發(fā)生改變,而實(shí)參中的值不會變化。

參考如下示例:

void Exchg1(int x, int y) 
{
 int tmp;
 tmp=x;
 x=y;
 y=tmp;
 printf("Exchg1:x=%d,y=%d\n",x,y);
}
void Exchg2(int &x, int &y) 
{
 int tmp;
 tmp=x;
 x=y;
 y=tmp;
 printf("Exchg2:x=%d,y=%d\n",x,y);
}
void Exchg3(int *x, int *y) 
{
 int tmp;
 tmp=*x;
 *x=*y;
 *y=tmp;
 printf("Exchg3:x=%d,y=%d\n",*x,*y);
}

void main()
{
 int a=4,b=6;
 Exchg1 (a,b) ;
 printf("a=%d,b=%d\n",a,b);
 Exchg2 (a,b);
 printf("a=%d,b=%d\n",a,b);
 Exchg3(&a,&b) ;
 printf("a=%d,b=%d\n",a,b);
}

這里Exchg1函數(shù)被調(diào)用的時候,并沒有成功交換a跟b的數(shù)據(jù)。為何呢。
int a=4,b=6;
Exchg1 (a,b) ;   //這里本質(zhì)上發(fā)生的是:Exchg1 (intx=a,int y=b) ;   x跟y是函數(shù)定義里面的形參,也就是說這里只是把實(shí)參a跟b的值賦予了x,y這2個形參變量。接下來,函數(shù)里發(fā)生的值互換只換掉了x跟y的值,而實(shí)參a跟b沒有影響。
再看Exchg2 (a,b);   //再看本質(zhì)Exchg2 (int &x=a,int &y=b);   這里x跟y都是a,b的引用,操作x跟y交換就等于a跟b交換,自然,調(diào)用Exchg2 可以成功交換a跟b
Exchg3(&a,&b) ;   //Exchg3(int *x=&a,int *y=&b);   x跟y2個形參是a跟b的指針,也就是實(shí)參數(shù)據(jù)存放的地址。然后函數(shù)里交換了x跟y指向的數(shù)據(jù),也就是實(shí)參a跟b,所以,交換也是成功的。

代碼運(yùn)行的結(jié)果,exchg1沒有交換a,b值;exchg2交換了a,b值,到了exchg,a,b的值似乎沒有交換,仍舊是a為4,b為6,剛開始以為代碼有問題,后來設(shè)置了斷點(diǎn)之后,發(fā)現(xiàn)代碼運(yùn)行到exchg3(&a,&b)時,a=6,b=4了,所以代碼運(yùn)行結(jié)果和初始值一樣的話,說明已經(jīng)交換了a,b的值,至此說明代碼是沒有任何問題的。

相關(guān)文章

  • Qt繪制簡單時鐘

    Qt繪制簡單時鐘

    這篇文章主要為大家詳細(xì)介紹了Qt繪制簡單時鐘效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • 求子數(shù)組最大和的實(shí)例代碼

    求子數(shù)組最大和的實(shí)例代碼

    求子數(shù)組最大和的實(shí)例代碼,需要的朋友可以參考一下
    2013-03-03
  • VSCode遠(yuǎn)程開發(fā)調(diào)試服務(wù)器c/c++代碼

    VSCode遠(yuǎn)程開發(fā)調(diào)試服務(wù)器c/c++代碼

    語音相關(guān)的好多項(xiàng)目要在linux上跑,但代碼開發(fā)大多是在PC機(jī)上,本篇簡單介紹一下怎么在個人電腦上用VSCode遠(yuǎn)程開發(fā)調(diào)試服務(wù)器上的c/c++代碼。感興趣的朋友跟隨小編一起看看吧
    2020-04-04
  • C++分析講解類的靜態(tài)成員變量是什么

    C++分析講解類的靜態(tài)成員變量是什么

    在C++中,靜態(tài)成員是屬于整個類的而不是某個對象,靜態(tài)成員變量只存儲一份供所有對象共用。所以在所有對象中都可以共享它。使用靜態(tài)成員變量實(shí)現(xiàn)多個對象之間的數(shù)據(jù)共享不會破壞隱藏的原則,保證了安全性還可以節(jié)省內(nèi)存
    2022-04-04
  • C++編寫生成不重復(fù)的隨機(jī)數(shù)代碼

    C++編寫生成不重復(fù)的隨機(jī)數(shù)代碼

    本文給大家匯總介紹了3種c++實(shí)現(xiàn)生成不重復(fù)的隨機(jī)數(shù)的函數(shù),十分的簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-05-05
  • C++ 類this及返回自身對象的引用方式

    C++ 類this及返回自身對象的引用方式

    這篇文章主要介紹了C++ 類this及返回自身對象的引用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 淺析C++淺拷貝與深拷貝的聯(lián)系和區(qū)別

    淺析C++淺拷貝與深拷貝的聯(lián)系和區(qū)別

    在c++中,深拷貝和淺拷貝也算是一個難點(diǎn),特別是對于初學(xué)者來說,往往在不知道兩者區(qū)別的情況下而錯誤的使用了淺拷貝,從而導(dǎo)致了野指針之類的問題,但是又因?yàn)槿鄙倮斫馑院茈y定位到問題所在
    2022-09-09
  • C語言使用openSSL庫AES模塊實(shí)現(xiàn)加密功能詳解

    C語言使用openSSL庫AES模塊實(shí)現(xiàn)加密功能詳解

    這篇文章主要介紹了C語言使用openSSL庫AES模塊實(shí)現(xiàn)加密功能,詳細(xì)分析了C語言加密的相關(guān)概念、原理及AES模塊加密具體實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-05-05
  • C++使用string的大數(shù)減法運(yùn)算(2)

    C++使用string的大數(shù)減法運(yùn)算(2)

    這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)減法運(yùn)算,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • C++函數(shù)重載介紹與原理詳解

    C++函數(shù)重載介紹與原理詳解

    這篇文章主要為大家介紹了C++函數(shù)重載介紹與原理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01

最新評論