最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

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

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

參考如下示例:

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)用的時(shí)候,并沒(méi)有成功交換a跟b的數(shù)據(jù)。為何呢。
int a=4,b=6;
Exchg1 (a,b) ;   //這里本質(zhì)上發(fā)生的是:Exchg1 (intx=a,int y=b) ;   x跟y是函數(shù)定義里面的形參,也就是說(shuō)這里只是把實(shí)參a跟b的值賦予了x,y這2個(gè)形參變量。接下來(lái),函數(shù)里發(fā)生的值互換只換掉了x跟y的值,而實(shí)參a跟b沒(méi)有影響。
再看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個(gè)形參是a跟b的指針,也就是實(shí)參數(shù)據(jù)存放的地址。然后函數(shù)里交換了x跟y指向的數(shù)據(jù),也就是實(shí)參a跟b,所以,交換也是成功的。

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

相關(guān)文章

  • C語(yǔ)言簡(jiǎn)明清晰講解結(jié)構(gòu)體

    C語(yǔ)言簡(jiǎn)明清晰講解結(jié)構(gòu)體

    C語(yǔ)言結(jié)構(gòu)體(Struct)從本質(zhì)上講是一種自定義的數(shù)據(jù)類(lèi)型,只不過(guò)這種數(shù)據(jù)類(lèi)型比較復(fù)雜,是由 int、char、float 等基本類(lèi)型組成的。你可以認(rèn)為結(jié)構(gòu)體是一種聚合類(lèi)型
    2022-05-05
  • C語(yǔ)言函數(shù)指針的老生常談

    C語(yǔ)言函數(shù)指針的老生常談

    這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • C語(yǔ)言之qsort函數(shù)詳解

    C語(yǔ)言之qsort函數(shù)詳解

    這篇文章主要介紹了C語(yǔ)言中qsort函數(shù)的用法實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • C++深入刨析優(yōu)先級(jí)隊(duì)列priority_queue的使用

    C++深入刨析優(yōu)先級(jí)隊(duì)列priority_queue的使用

    最近我學(xué)習(xí)了C++中的STL庫(kù)中的優(yōu)先級(jí)隊(duì)列(priority_queue)容器適配器,對(duì)于優(yōu)先級(jí)隊(duì)列,我們不僅要會(huì)使用常用的函數(shù)接口,我們還有明白這些接口在其底層是如何實(shí)現(xiàn)的
    2022-08-08
  • 深入理解c++中char*與wchar_t*與string以及wstring之間的相互轉(zhuǎn)換

    深入理解c++中char*與wchar_t*與string以及wstring之間的相互轉(zhuǎn)換

    本篇文章是對(duì)c++中的char*與wchar_t*與string以及wstring之間的相互轉(zhuǎn)換進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的圖文教程

    Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的圖文教程

    很久沒(méi)有寫(xiě)C語(yǔ)言了,今天抽空學(xué)習(xí)下C語(yǔ)言知識(shí),接下來(lái)通過(guò)本文給大家介紹Vscode搭建遠(yuǎn)程c開(kāi)發(fā)環(huán)境的詳細(xì)步驟,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-11-11
  • 詳解C++11 變參模板

    詳解C++11 變參模板

    這篇文章主要介紹了C++11 變參模板的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c++11,感興趣的朋友可以了解下
    2020-08-08
  • 示例詳解C++中的各種鎖

    示例詳解C++中的各種鎖

    C++中常見(jiàn)的鎖包括互斥鎖、遞歸互斥鎖、讀寫(xiě)鎖、定時(shí)互斥鎖、遞歸定時(shí)互斥鎖、自旋鎖和條件變量,互斥鎖用于防止多線程同時(shí)訪問(wèn)共享資源,遞歸互斥鎖允許同一線程多次獲取鎖,讀寫(xiě)鎖區(qū)分讀寫(xiě)操作,提高并發(fā)性
    2024-11-11
  • C++簡(jiǎn)明圖解分析淺拷貝與深拷貝

    C++簡(jiǎn)明圖解分析淺拷貝與深拷貝

    在c++中,深拷貝和淺拷貝也算是一個(gè)難點(diǎn),特別是對(duì)于初學(xué)者來(lái)說(shuō),往往在不知道兩者區(qū)別的情況下而錯(cuò)誤的使用了淺拷貝,從而導(dǎo)致了野指針之類(lèi)的問(wèn)題,但是又因?yàn)槿鄙倮斫馑院茈y定位到問(wèn)題所在
    2022-06-06
  • C++中函數(shù)的用法小結(jié)

    C++中函數(shù)的用法小結(jié)

    這篇文章主要為大家分享下本人在閱讀《C++ Primer》函數(shù)一章時(shí)的讀書(shū)總結(jié),需要的朋友可以參考下
    2014-02-02

最新評(píng)論

璧山县| 平罗县| 游戏| 张掖市| 奎屯市| 思南县| 紫阳县| 故城县| 额敏县| 牟定县| 城步| 双桥区| 阿克苏市| 环江| 博罗县| 桐庐县| 滁州市| 七台河市| 双流县| 定南县| 金沙县| 桐柏县| 珲春市| 绵阳市| 天气| 岑溪市| 琼中| 耒阳市| 濉溪县| 深圳市| 广东省| 青铜峡市| 巴里| 四子王旗| 洪江市| 台北县| 平乐县| 嘉祥县| 论坛| 衡阳县| 平远县|