两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

有那么一種情況,函數(shù)本身需要返回多個(gè)值,如在地圖參數(shù)中需要返回二維坐標(biāo)(x,y),或者是系統(tǒng)設(shè)計(jì)中需要返回一個(gè)學(xué)生多門課程的成績(jī)。這里提供了一些做法和思路。

1. 全局變量,為什么不用它?

如,這樣的方法,當(dāng)我們需要通過(guò)函數(shù)對(duì)多個(gè)值進(jìn)行返回和傳遞的時(shí)候,可以使用一種弄虛作假的方式,就是使用全局變量,不需要函數(shù)返回,只需要在關(guān)鍵時(shí)刻進(jìn)行設(shè)置就可以了。

int x,y;
void getWay(int a,int b){
    x=a,y=b;
}
int main(){
    getWay(10,20);
    cout<<x<<" "<<y<<endl;
    return 0;
}

這是在自欺欺人,對(duì),當(dāng)我們需要多個(gè)值進(jìn)行返回傳遞的時(shí)候,我們可以使用全局變量避免掉這個(gè)設(shè)計(jì),但這并不能解決核心問(wèn)題,使用全局變量當(dāng)我們需要多次調(diào)用或者遞歸調(diào)用函數(shù)時(shí)則會(huì)出現(xiàn)諸如數(shù)據(jù)紊亂等的錯(cuò)誤,而且一旦在工程中使用大量的全局變量,則會(huì)造成很多意外的后果,因此這里不過(guò)多討論。

2. 雙返回值,pair

在我們學(xué)習(xí)pair一對(duì)數(shù)據(jù)的時(shí)候我們就有了解,我們可以通過(guò)pair作為數(shù)據(jù)類型進(jìn)行多組數(shù)據(jù)的傳遞,這往往對(duì)于兩個(gè)數(shù)據(jù)(較少的數(shù)據(jù))而言,是最理想的情況。

pair<string,int> getClass(int id){
    return make_pair("DOTCPP!",id);
}
 
int main(int argc,char **argv){
    pair<string,int> a;
    a=getClass(10);
    cout<<a.first<<" "<<a.second<<endl;
    return 0;
}

3. 指針?lè)祷胤?/span>

指針?lè)祷胤ǎㄓ置麛?shù)組返回法)顧名思義,我們的數(shù)據(jù)類型使用的是一個(gè)指針類型的數(shù)組作為返回類型,其返回的內(nèi)容在內(nèi)存空間上是連貫的,這個(gè)方法也被用來(lái)進(jìn)行常規(guī)的數(shù)組作為參數(shù)的返回。

#include<iostream>
using namespace std;
int *getWay(int n){
    int *p=new int[3];
    p[0]=n+10;
    p[1]=n+20;
    p[2]=n+30;
    return p;
}
int main(){
    int *res = getWay(10);
    for(int i=0;i<3;i++){
        cout<<res[i]<<' ';
    }
    delete []p;//防止內(nèi)存泄漏
    return 0;
}

4.結(jié)構(gòu)體返回法

這個(gè)是對(duì)于超過(guò)兩個(gè)元素的最推薦的寫(xiě)法了,對(duì)于指針?lè)祷胤ǎ涫窍喈?dāng)于把多組的數(shù)據(jù)當(dāng)成一個(gè)共同類型的參數(shù)作為處理,可一旦返回的元素同時(shí)有整形又有浮點(diǎn)型這樣不同的元素,指針?lè)祷氐姆椒ㄍ筒惶m用了,最理想的方式還是設(shè)計(jì)結(jié)構(gòu)體,使用結(jié)構(gòu)體返回法。

#include<iostream>
using namespace std;
struct ans
{
    int a;
    char b;
    double c;
};
ans getWay(int n){
    struct ans r_ans;
    r_ans.a=n;
    r_ans.b=n;
    r_ans.c=n+0.11;
    return r_ans;
}
int main(){
    ans ans = getWay(97);
    cout<<ans.a<<' '<<ans.b<<' '<<ans.c<<endl;
    return 0;
}
//output:
//97 a 97.11

這樣有點(diǎn)類似于在第二第三章所學(xué)的數(shù)據(jù)結(jié)構(gòu)定義的內(nèi)容,事實(shí)上的確是相通的,函數(shù)多返回值是C/C++設(shè)計(jì)上所缺失的,也由于時(shí)代原因當(dāng)時(shí)的設(shè)計(jì)不需要考慮如今那么多,而如今的各種新型語(yǔ)言均支持了這個(gè)概念,直接使用逗號(hào)進(jìn)行分割即可達(dá)到效果。

5. 眼饞一下,看看PYTHON的寫(xiě)法

def getWay(n):
    a=n 
    b=chr(n)
    c=n+0.11
    return a,b,c
 
x,y,z=getWay(97)
print(x,y,z)

沒(méi)錯(cuò),這樣就完成了本章第五點(diǎn)C++中花大篇幅介紹的功能,C語(yǔ)言網(wǎng)Dotcpp已經(jīng)上線Python編譯器,允許各位使用Python答題,歡迎大家使用。


點(diǎn)贊(0)

C語(yǔ)言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競(jìng)賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點(diǎn)擊了解:

一點(diǎn)編程也不會(huì)寫(xiě)的:零基礎(chǔ)C語(yǔ)言學(xué)練課程

解決困擾你多年的C語(yǔ)言疑難雜癥特性的C語(yǔ)言進(jìn)階課程

從零到寫(xiě)出一個(gè)爬蟲(chóng)的Python編程課程

只會(huì)語(yǔ)法寫(xiě)不出代碼?手把手帶你寫(xiě)100個(gè)編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競(jìng)賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運(yùn)行等待時(shí)間)