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

超詳細(xì)講解C++的三種函數(shù)傳遞方式

 更新時(shí)間:2022年05月18日 09:09:32   作者:對(duì)象new不出來  
這個(gè)文章我將把我學(xué)習(xí)的有關(guān)函數(shù)傳遞形式的知識(shí)做個(gè)總結(jié),相信很多剛?cè)腴T的同學(xué)看到許多文章五花八門的形參會(huì)感到頭疼,但本質(zhì)上無非就是我要說的三種傳遞形式,快來跟我一起學(xué)習(xí)吧

一、值傳遞

代碼如下:

void swap1(int x,int y)
{
	int temp = x;
    x = y; 
    y = temp;
}//main函數(shù)里寫入 swap1(a,b);即可 其中x,y形參  a,b實(shí)參

這里我用swap1()交換函數(shù)做舉例,函數(shù)內(nèi)容部分是非常經(jīng)典的三步交換值的代碼,這樣就完成了一個(gè)非常簡(jiǎn)單的值傳遞函數(shù)。

二、地址傳遞

1.指針的有關(guān)知識(shí)

我們經(jīng)常聽到這樣一句話“指針指向地址”,沒錯(cuò),指針用來存放變量的地址,這樣可以有效的節(jié)省內(nèi)存空間。例如

int a=6; int *p=&a; cout<<"a的值為:"<<a<<endl; 和cout<<"*p的值為:"<<*p<<endl;

上面兩個(gè)輸出結(jié)果都是一樣的,其中p=&a,意為p現(xiàn)在是變量a的地址,而*p就相當(dāng)于*&a,這樣*和&抵消,實(shí)際上*p就表示變量a的值

2.地址傳遞舉例

代碼如下:

void swap2(int *x,int *y)
{
	int temp = *x; 
    *x = *y;
    *y = temp;
}//main函數(shù)里寫 swap2(&a,&b) *x和*y為形參,a和b為實(shí)參

這里不同于值傳遞的是,傳入實(shí)參的時(shí)候加上了&符號(hào)。因?yàn)楹瘮?shù)傳參規(guī)定對(duì)應(yīng)的數(shù)據(jù)類型需要一致,所以不難理解*x=&a,*y=&b。

三、引用傳遞

1.引用的相關(guān)知識(shí)

示例:int a=10; int &b=a; cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;

上面兩個(gè)輸出結(jié)果都是10 其實(shí)引用就是給變量起個(gè)別名,就比如你小名張三,長(zhǎng)大了叫張大仙,當(dāng)你張三18歲了,那么張大仙也18歲,無論改變a還是b,他們兩個(gè)的結(jié)果都一樣

2.引用傳遞舉例

代碼如下:

void swap3(int &x,int &y)
{
	int temp = x;
    x = y; 
    y = temp;
}//main 里寫 swap3(a,b)  &x,&y為形參 a,b為實(shí)參

這里跟我上面提到的一致,就是 &x=a a的別名為x; 那么x和y的改變就會(huì)影響a和b的值,從而完成交換數(shù)據(jù)的任務(wù)

四、三種傳參方式的比較

值傳遞形參不能修飾實(shí)參:第一種值傳遞后主函數(shù)a,b的值并沒有發(fā)生改變,因?yàn)槿绻麄鞯闹皇亲兞康闹?,那么編譯器會(huì)拷貝一個(gè)副本,只是把a(bǔ),b的值賦給了x和y,很顯然這種方式的a和x的地址不相同,就比如現(xiàn)在有一個(gè)香蕉,我利用克隆技術(shù)復(fù)制了一個(gè)一模一樣的出來,我把克隆的吃了,那原來的肯定還在,并不影響原來的香蕉。

地址傳遞的形參可以修飾實(shí)參,利用指針和引用方法,傳遞的都是變量的地址,所以形參的改變會(huì)引起實(shí)參的變化。

總結(jié)

以上就是我分享給大家的三種函數(shù)值傳遞方式,我個(gè)人推薦多使用引用傳遞,相比于值傳遞他不會(huì)產(chǎn)生副本,節(jié)省空間,相比于指針?biāo)男问礁?jiǎn)單,效果卻一樣,如果有錯(cuò)誤或者有更好的見解一定私信我,共同進(jìn)步哦

到此這篇關(guān)于超詳細(xì)講解C++的三種函數(shù)傳遞方式的文章就介紹到這了,更多相關(guān)C++函數(shù)傳遞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入分析Visual C++進(jìn)行串口通信編程的詳解

    深入分析Visual C++進(jìn)行串口通信編程的詳解

    本篇文章是對(duì)Visual C++進(jìn)行串口通信編程進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++私有繼承(二)

    C++私有繼承(二)

    這篇文章主要介紹了C++私有繼承,在私有繼承時(shí),基類的公有對(duì)象以及保護(hù)對(duì)象會(huì)變成派生類的私有對(duì)象。我們可以在派生類方法當(dāng)中使用它,但無法通過派生類對(duì)象直接調(diào)用,但無法訪問基類的私有方法和對(duì)象,下面具體內(nèi)容,需要的朋友可以參考一下
    2022-01-01
  • 淺談C++虛重載操作符 virtual operator= 的使用方法

    淺談C++虛重載操作符 virtual operator= 的使用方法

    下面小編就為大家?guī)硪黄獪\談C++虛重載操作符 virtual operator= 的使用方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-01-01
  • select函數(shù)實(shí)現(xiàn)高性能IO多路訪問的關(guān)鍵示例深入解析

    select函數(shù)實(shí)現(xiàn)高性能IO多路訪問的關(guān)鍵示例深入解析

    這篇文章主要為大家介紹了select函數(shù)實(shí)現(xiàn)高性能IO多路訪問的關(guān)鍵示例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • C語言實(shí)現(xiàn)繪制LoveBeat愛心曲線的示例代碼

    C語言實(shí)現(xiàn)繪制LoveBeat愛心曲線的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何溧陽C語言實(shí)現(xiàn)繪制LoveBeat愛心曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-03-03
  • 利用Qt+opencv實(shí)現(xiàn)視頻分解為圖片

    利用Qt+opencv實(shí)現(xiàn)視頻分解為圖片

    這篇文章主要為大家詳細(xì)介紹了如何利用Qt和opencv實(shí)現(xiàn)視頻分解為圖片,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C語言繪制曲線圖的示例代碼

    C語言繪制曲線圖的示例代碼

    這篇文章主要介為大家詳細(xì)紹了如何使用C語言繪制統(tǒng)計(jì)圖中的曲線圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • 基于C語言中野指針的深入解析

    基于C語言中野指針的深入解析

    “野指針”不是NULL指針,是指向“垃圾”內(nèi)存的指針。人們一般不會(huì)錯(cuò)用NULL指針,因?yàn)橛胕f語句很容易判斷。但是“野指針”是很危險(xiǎn)的,if語句對(duì)它不起作用
    2013-07-07
  • C++樹之遍歷二叉樹實(shí)例詳解

    C++樹之遍歷二叉樹實(shí)例詳解

    這篇文章主要給大家介紹了關(guān)于C++樹之遍歷二叉樹的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • linux c++模擬簡(jiǎn)易網(wǎng)絡(luò)爬蟲實(shí)例

    linux c++模擬簡(jiǎn)易網(wǎng)絡(luò)爬蟲實(shí)例

    下面小編就為大家?guī)硪黄猯inux c++模擬簡(jiǎn)易網(wǎng)絡(luò)爬蟲實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評(píng)論