C ++ ایڈریس کے ذریعے کال کریں اور حوالہ کے ذریعے کال کریں۔

C Call Address



C ++ ایک لچکدار عام مقصد کی پروگرامنگ زبان ہے۔ یہ اصل میں کی طرف سے پیدا کیا گیا تھا بجارنی اسٹراسٹرپ ، ایک ڈنمارک کمپیوٹر سائنسدان ، 1985 میں واپس آیا۔ C ++ تین پیرامیٹر گزرنے کے طریقوں کی حمایت کرتا ہے ، یعنی کال کے حساب سے کال ، ایڈریس کے ذریعے کال ، اور حوالہ کے ذریعے کال۔ اس آرٹیکل میں ، ہم کال بذریعہ ایڈریس اور کال بذریعہ ریفرنس میکانزم پر تبادلہ خیال کرنے جا رہے ہیں۔

فنکشن کیا ہے؟

اس سے پہلے کہ ہم اصل موضوع میں کود جائیں ، ہمیں یہ سمجھنے کی ضرورت ہے کہ C ++ میں فنکشن کیا ہے۔ آپ میں سے بہت سے افعال سے پہلے ہی واقف ہو سکتے ہیں۔







فنکشن بنیادی طور پر کوڈ کا ایک ٹکڑا ہوتا ہے جسے کسی خاص کام کے لیے استعمال کیا جا سکتا ہے۔ ایک فنکشن بنیادی طور پر C ++ پروگرام میں دہرانے والے کوڈ کو کم کرنے کے لیے استعمال ہوتا ہے۔ یہ ان پٹ کو پیرامیٹرز کے طور پر لیتا ہے اور آؤٹ پٹ کو بطور ریٹرن ویلیو لوٹاتا ہے۔ اگر ہم ایک بار فنکشن کی وضاحت کرتے ہیں تو ، ہم اپنے پروگرام کے بعد کے حصے میں اسے کئی بار کال/استعمال کر سکتے ہیں۔ اس طرح ، ہم پروگرام میں بہت سارے تکراری کوڈ کو بچاتے ہیں۔



ہر C ++ پروگرام میں مرکزی () فنکشن ہوگا۔ مرکزی () فنکشن C ++ پروگرام کے لیے انٹری پوائنٹ ہے۔ مین () فنکشن کے علاوہ ، پروگرامر جتنے افعال چاہے بیان کر سکتا ہے۔



فنکشن کی وضاحت کرنے کا نحو یہ ہے:





ریٹرن ٹائپ فنکشن_نام۔(ان پٹ پیرامیٹر لسٹ۔)

C ++ میں فنکشن 0 یا اس سے زیادہ ان پٹ پیرامیٹرز کو قبول کر سکتا ہے ، جبکہ یہ صرف ایک ریٹرن ویلیو واپس کر سکتا ہے۔

ایڈریس کیا ہے؟

C ++ میں دو قسم کے متغیرات ہیں (C زبان کی طرح) - ڈیٹا متغیر اور پتہ متغیر۔ ایڈریس متغیر کسی دوسرے ڈیٹا متغیر کا پتہ محفوظ کرنے کے لیے استعمال ہوتا ہے۔ مثال کے طور پر ، آئیے درج ذیل کوڈ کے ٹکڑوں پر غور کریں:



intمیں= 100۔؛
int *پی ٹی آر= &میں؛

یہاں ، پہلا بیان ہمیں بتاتا ہے کہ متغیر i ایک ڈیٹا متغیر ہے ، اور یہ 100 کی قیمت کو محفوظ کر رہا ہے۔ دوسرے بیان میں ، ہم ایک پوائنٹر متغیر کا اعلان کر رہے ہیں ، یعنی ptr ، اور اسے متغیر i کے پتے سے شروع کر رہے ہیں۔

حوالہ کیا ہے؟

حوالہ C ++ زبان کی ایک اور طاقتور خصوصیت ہے۔ آئیے درج ذیل کوڈ کے ٹکڑوں پر غور کریں:

intکو= 200۔؛
int &r=کو؛

اس مثال میں ، ہم نے ایک عدد کا اعلان کیا ہے ، یعنی a اور پھر ایک حوالہ متغیر r کا اعلان کیا ہے ، جو کہ a کی قیمت سے شروع ہوتا ہے۔ لہذا ، حوالہ متغیر کسی اور متغیر کے عرف کے سوا کچھ نہیں ہے۔

پیرامیٹر گزرنے کے طریقے:

C ++ زبان میں تین قسم کے پیرامیٹر گزرنے کے طریقے ہیں:

  1. قیمت کے حساب سے کال کریں / قیمت کے حساب سے پاس کریں۔
  2. ایڈریس کے ذریعے کال کریں / ایڈریس کے ذریعے پاس کریں۔
  3. حوالہ کے ذریعے کال کریں / حوالہ سے پاس کریں۔

اس آرٹیکل میں ، ہم بات کر رہے ہیں - کال بذریعہ ایڈریس اور کال بذریعہ حوالہ۔

کال بذریعہ ایڈریس / پاس بذریعہ ایڈریس کیا ہے؟

کال بذریعہ ایڈریس / پاس بذریعہ ایڈریس طریقہ ، فنکشن دلائل بطور ایڈریس منظور ہوتے ہیں۔ کالر فنکشن پیرامیٹرز کا پتہ پاس کرتا ہے۔ پوائنٹر متغیرات فنکشن کی تعریف میں استعمال ہوتے ہیں۔ کال بذریعہ ایڈریس طریقہ کی مدد سے ، فنکشن اصل پیرامیٹرز تک رسائی حاصل کرسکتا ہے اور ان میں ترمیم کرسکتا ہے۔ ہم کال کے پتے کے طریقہ کار کی ایک مثال اس مضمون کے بعد والے حصے میں دیکھیں گے۔

کال بائی ریفرنس / پاس بذریعہ حوالہ کیا ہے؟

کال بہ حوالہ / پاس بذریعہ حوالہ طریقہ ، فنکشن کے پیرامیٹرز کو بطور حوالہ دیا جاتا ہے۔ فنکشن کی تعریف کے اندر ، ریفرنس متغیر کا استعمال کرتے ہوئے اصل پیرامیٹرز تک رسائی حاصل کی جاتی ہے۔

مثالیں:

اب ، چونکہ ہم پیرامیٹر پاس کرنے کے طریقوں کے تصور کو سمجھتے ہیں ، ہم C ++ میں پیرامیٹر پاس کرنے کے طریقہ کار کو سمجھنے کے لیے کئی مثال کے پروگرام دیکھیں گے:

  1. مثال -1-ایڈریس کے ذریعے کال کریں (1)
  2. مثال 2-ایڈریس کے ذریعے کال کریں (2)
  3. مثال 3-حوالہ سے کال کریں (1)
  4. مثال 4-حوالہ سے کال کریں (2)

پہلی دو مثالیں یہ بتانے کے لیے دی گئی ہیں کہ کال بذریعہ ایڈریس طریقہ C ++ میں کیسے کام کرتا ہے۔ آخری دو مثالیں کال کے حوالہ سے تصور کی وضاحت کرنا ہیں۔

مثال -1-ایڈریس کے ذریعے کال کریں (1)

اس مثال میں ، ہم کال ایڈریس میکانزم کا مظاہرہ کرنے جا رہے ہیں۔ مرکزی () فنکشن سے ، ہم ہیلو () فنکشن کو کال کر رہے ہیں اور var کا پتہ پاس کر رہے ہیں۔ فنکشن کی تعریف میں ، ہم ایک پوائنٹر متغیر میں var کا پتہ وصول کر رہے ہیں ، یعنی p۔ فنکشن ہیلو کے اندر ، var کی قدر کو پوائنٹر کی مدد سے 200 میں تبدیل کیا جا رہا ہے۔ لہذا ، ہیلو () فنکشن کال کے بعد مرکزی () فنکشن کے اندر var کی قیمت 200 میں تبدیل ہو رہی ہے۔

#شامل کریں
استعمال کرتے ہوئے نام کی جگہگھنٹے؛

باطلہیلو(int *p)
{
لاگت <<endl<< 'ہیلو () فنکشن کے اندر:' <<endl؛
لاگت << 'p =' کی قیمت << *p<<endl؛
*p= 200۔؛
لاگت << 'p =' کی قیمت << *p<<endl؛
لاگت << 'ہیلو () فنکشن سے باہر نکلنا۔' <<endl؛
}

intمرکزی()
{
intکہاں= 100۔؛
لاگت << مرکزی () فنکشن کے اندر var کی قدر = ' <<کہاں<<endl؛

ہیلو(&کہاں)؛

لاگت <<endl<< مرکزی () فنکشن کے اندر var کی قدر = ' <<کہاں<<endl؛

واپسی ؛
}

مثال 2-ایڈریس کے ذریعے کال کریں (2)

ایڈریس کے طریقہ سے کال کی یہ ایک اور مثال ہے۔ اس مثال میں ، ہم یہ بتانے جا رہے ہیں کہ کال کے ذریعے ایڈریس کا طریقہ کس طرح حقیقی زندگی کے مسئلے کو حل کرنے کے لیے استعمال کیا جا سکتا ہے۔ مثال کے طور پر ، ہم دو متغیرات کو تبدیل کرنے کے لیے ایک فنکشن لکھنا چاہتے ہیں۔ اگر ہم کال کو ویلیو میکانزم کے ذریعے دو متغیرات کو تبدیل کرنے کے لیے استعمال کرتے ہیں ، تو اصل متغیر کال کرنے والے فنکشن میں تبدیل نہیں ہوتے۔ ایسے منظر نامے میں کال بذریعہ پتہ استعمال کیا جا سکتا ہے۔ اس مثال میں ، ہم دونوں var_1 (& var_1) اور var_2 (& var_2) دونوں کا پتہ mySwap () فنکشن میں منتقل کر رہے ہیں۔ mySwap () فنکشن کے اندر ، ہم ان دو متغیرات کی اقدار کو اشاروں کی مدد سے تبدیل کر رہے ہیں۔ جیسا کہ آپ نیچے آؤٹ پٹ میں دیکھ سکتے ہیں ، mySwap () فنکشن کے عمل میں آنے کے بعد ان متغیرات کی اصل قیمت مین () فنکشن میں تبدیل ہو رہی ہے۔

#شامل کریں
استعمال کرتے ہوئے نام کی جگہگھنٹے؛

باطلمیرا تبادلہ(int *vptr_1 ،int *vptr_2)
{
inttemp_var؛
temp_var= *vptr_1؛
*vptr_1= *vptr_2؛
*vptr_2=temp_var؛
}

intمرکزی()
{
intvar_1= 100۔؛
intvar_2= 300۔؛

لاگت << 'mySwap () فنکشن کو کال کرنے سے پہلے ، var_1 کی ویلیو:' <<var_1<<endl؛
لاگت << 'mySwap () فنکشن کال کرنے سے پہلے ، var_2 کی ویلیو:' <<var_2<<endl<<endl؛

لاگت << 'کالنگ مائی سویپ () فنکشن - ایڈریس کے ذریعے کال کریں۔' <<endl<<endl؛
میرا تبادلہ(&var_1 ،&var_2)؛

لاگت << 'mySwap () فنکشن کو کال کرنے کے بعد ، var_1 کی ویلیو:' <<var_1<<endl؛
لاگت << 'mySwap () فنکشن کال کرنے کے بعد ، var_2 کی ویلیو:' <<var_2<<endl؛

واپسی ؛
}

مثال 3-حوالہ سے کال کریں (1)

اس مثال میں ، ہم یہ ظاہر کرنے جا رہے ہیں کہ کال بذریعہ حوالہ C ++ کیسے کام کرتا ہے۔ ہیلو () فنکشن ڈیفینیشن میں ، قیمت بطور حوالہ متغیر (& p) موصول ہو رہی ہے۔ حوالہ متغیر (یعنی p) کی مدد سے ، ہم مرکزی () فنکشن کے اندر اصل پیرامیٹر (var) کی قدر کو تبدیل کرنے کے قابل ہیں۔

#شامل کریں
استعمال کرتے ہوئے نام کی جگہگھنٹے؛

باطلہیلو(int &p)
{
لاگت <<endl<< 'ہیلو () فنکشن کے اندر:' <<endl؛
لاگت << 'p = کی قیمت <<p<<endl؛
p= 200۔؛
لاگت << 'p = کی قیمت <<p<<endl؛
لاگت << 'ہیلو () فنکشن سے باہر نکلنا۔' <<endl؛
}

intمرکزی()
{
intکہاں= 100۔؛
لاگت << مرکزی () فنکشن کے اندر var کی قدر = ' <<کہاں<<endl؛

ہیلو(کہاں)؛

لاگت <<endl<< مرکزی () فنکشن کے اندر var کی قدر = ' <<کہاں<<endl؛

واپسی ؛
}

مثال 4-حوالہ سے کال کریں (2)

یہ حوالہ سے کال کی ایک اور مثال ہے۔ اس مثال میں ، ہم یہ ظاہر کرنے جا رہے ہیں کہ کس طرح کال کے ذریعے حوالہ C ++ میں ایک حقیقی دنیا کی مثال کی مدد سے کام کرتا ہے۔ mySwap () فنکشن مندرجہ ذیل پیرامیٹرز کے ساتھ مین () فنکشن سے کہا جاتا ہے - var_1 اور var_2۔ mySwap () فنکشن کے اندر ، ہم پیرامیٹرز بطور حوالہ متغیر وصول کر رہے ہیں۔

#شامل کریں
استعمال کرتے ہوئے نام کی جگہگھنٹے؛

باطلمیرا تبادلہ(int &vref_1 ،int &vref_2)
{
inttemp_var؛
temp_var=vref_1؛
vref_1=vref_2؛
vref_2=temp_var؛
}

intمرکزی()
{
intvar_1= 100۔؛
intvar_2= 300۔؛

لاگت << 'mySwap () فنکشن کو کال کرنے سے پہلے ، var_1 کی ویلیو:' <<var_1<<endl؛
لاگت << 'mySwap () فنکشن کال کرنے سے پہلے ، var_2 کی ویلیو:' <<var_2<<endl<<endl؛

لاگت << کال کرنا mySwap () فنکشن - حوالہ سے کال کریں۔ <<endl<<endl؛
میرا تبادلہ(var_1 ، var_2۔)؛

لاگت << 'mySwap () فنکشن کو کال کرنے کے بعد ، var_1 کی ویلیو:' <<var_1<<endl؛
لاگت << 'mySwap () فنکشن کال کرنے کے بعد ، var_2 کی ویلیو:' <<var_2<<endl؛

واپسی ؛
}

نتیجہ

پیرامیٹر پاس کرنے کے طریقوں کو سمجھنا۔ سی ++۔ بہت اہم ہے. C پروگرامنگ لینگوئج کال بائی ویلیو اور کال کے ذریعے کال کی حمایت کرتی ہے۔ لیکن ، C ++ پچھلے دو میکانزم کے ساتھ حوالہ سے کال کی حمایت کرتا ہے۔ اس آرٹیکل میں ، ہم نے کئی کام کرنے والی مثالیں دیکھی ہیں کہ کال بذریعہ ایڈریس اور کال کے حوالہ سے تصور کو سمجھیں۔ سرایت شدہ ڈومین ایپلی کیشنز میں ایڈریس کے ذریعے کال ایک بہت ہی طاقتور اور مقبول طریقہ ہے۔