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

برگشت اشاره گر از تابع

+1 امتیاز
point* line::intersection(line* L)
{
	int x,y;
	x=(this->arzAzMabda - L->arzAzMabda) / (L->m - this->m);
	y=(L->m)*x + L->arzAzMabda;
	point o(x,y);
	return &o;
}

point* تابع بر میگردونه.. اینکه ما point o را بوجود اوردیم و return &oاین کارو میکنیم یعنی چی؟؟

سوال شده فروردین 13, 1393  بوسیله ی programmer (امتیاز 139)   9 19 32
ویرایش شده فروردین 13, 1393 بوسیله ی BlueBlade

1 پاسخ

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

وقتی که &o رو return می کنی یعنی این که داری آدرس o. رو return می کنی 

بعد این که کد بالا درست نیست چون وقتی که تابع return میشه o پاک میشه و آدرسی که برگشت دادین بی اعتبار میشه 

یا باید o رو با مقدار برگردونین  یا این که داخل تابع از new استفاده کنین

یعنی به این شکل

point* line::intersection(line* L)
{
    int x,y;
    x=(this->arzAzMabda - L->arzAzMabda) / (L->m - this->m);
    y=(L->m)*x + L->arzAzMabda;
    point* o= new point(x,y);
    return o;   
}

//ya

point line::intersection(line* L)
{
    int x,y;
    x=(this->arzAzMabda - L->arzAzMabda) / (L->m - this->m);
    y=(L->m)*x + L->arzAzMabda;
    point o(x,y);
    return o;
}

 

پاسخ داده شده فروردین 13, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده فروردین 13, 1393 بوسیله ی BlueBlade
یعنی return *o ؟
چطوری new میشه؟
ویرایش کردم .
asan mishe new kardan ro be man tozih bedin?aslan in khat: point* o= new point(x,y); daghigh chikar mikone?
اولا فارسی بنویسین.
دوما این که قبلا توی  سوال های قبلی که خودتون پرسیده بودین توضیح دادم .
http://goo.gl/SdqhVF
http://goo.gl/4FcrmK
...