برگرداندن دو مقدار از تابع - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

برگرداندن دو مقدار از تابع

+1 امتیاز

آیا راهی وجود داره که بشه  دو عدد رو از تابع برگردونیم ؟

int Read()
{
    int x,y;
    // calc x, y
    return (x,y);
}

 

سوال شده فروردین 11, 1393  بوسیله ی dark (امتیاز 27)   2 3 3
دوباره تگ گذاری شد فروردین 11, 1393 بوسیله ی BlueBlade

2 پاسخ

+4 امتیاز
 
بهترین پاسخ

باید به این شکل این کار رو انجام بدید :

void Read (int* rx,int* ry)
{
	int x,y;
	x = 2,y = 3;

	//
	// anjam dadan ie seri mohasebat rooye x,y
	//
	
	*rx = x;
	*ry = y;
}

 

یا به این شکل :

struct My
{
	int x,y;
};

My Read (void)
{
	int x,y;
	x = 2,y = 3;
	//
	// anjam dadan ie seri mohasebat rooye x,y
	//
	
	return My {x,y};
}

 

راه های دیگه هم که شبیه به همین هاست .

اگه میخواهید آرایه ای رو برگردونید باید اشاره گر به اون آرایه رو برگردونید و حواستون به این هم باشه که اون آرایه نباید در Stack اون تابع ساخته شده باشه جون که با تمام شدن کار تابع ، تابع و متغییرهای محلیش از Stack برداشته میشن .

میتونید اینطوری این کار رو کنید :

int* foo (int* tedad)
{
	*tedad = 50;
	int* arr = new int[*tedad];
	return arr;
}

اگه شما میدونید که همیشه اندازه ی آرایه یک عدد ثابت هست ، دیگه نیازی به متغییر tedad هم نخواهید داشت .

پاسخ داده شده فروردین 11, 1393 بوسیله ی Ali Rahbar (امتیاز 4,240)   6 16 46
انتخاب شد فروردین 11, 1393 بوسیله ی dark
+2 امتیاز

از std::pair هم میشه استفاده کرد

#include <iostream>

using namespace std;

pair<int,int> Read()
{
    int x=1,y=4;
    // calc x, y
    return make_pair(x,y);
}
int main(int argc, char* argv[])
{
    pair<int,int> a = Read();

    cout << a.first <<'\t'<< a.second << endl;
}

 

پاسخ داده شده فروردین 11, 1393 بوسیله ی MsM (امتیاز 108)   3 4 13
...