C++ میں فنکشنز کو دلائل کیسے منتقل کریں: قدر کے لحاظ سے بمقابلہ حوالہ؟

C My Fnkshnz Kw Dlayl Kys Mntql Kry Qdr K Lhaz S Bmqabl Hwal



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

1: قدر کے لحاظ سے دلائل کو پاس کرنا

متغیر کی ایک کاپی بنائی جاتی ہے اور فنکشن کو فراہم کی جاتی ہے جب دلائل قدر سے گزرے ہیں۔ . فنکشن کے اندر متغیر میں کی گئی تمام ترامیم صرف کاپی کو متاثر کرتی ہیں۔ اصل متغیر میں کچھ بھی تبدیل نہیں ہوا ہے۔ اس کے نتیجے میں، قدر سے گزرنا ایک محفوظ طریقہ ہے کیونکہ اصل متغیر کی قدر کو غیر ارادی طور پر تبدیل کرنے کا کوئی امکان نہیں ہے۔

قدر سے گزرنا تاہم، غیر موثر ہو سکتا ہے، خاص طور پر جب بڑی یا پیچیدہ ڈیٹا کی قسموں سے نمٹنا ہو۔ ہر فنکشن کال جس میں ڈیٹا کی ایک کاپی کی ضرورت ہوتی ہے وہ تیزی سے CPU اور میموری کے وسائل کو ختم کر سکتی ہے۔ مزید برآں، قدر سے گزرنا ان فنکشنز کے لیے استعمال نہیں کیا جا سکتا جن کا مقصد اصل متغیر کی قدر کو تبدیل کرنا ہے کیونکہ کاپی اور اصل متغیر منسلک نہیں ہیں۔







2: حوالہ کے ذریعے دلائل پاس کرنا

متغیرات ہو سکتے ہیں۔ حوالہ سے گزر گیا C++ میں بھی، جو ان مسائل کو حل کرنے میں مدد کرتا ہے۔ اصل متغیر کو فنکشن میں بھیجا جاتا ہے جب حوالہ سے گزر رہا ہے ، اور فنکشن کے اندر متغیر میں کی گئی کوئی بھی ترمیم اصل متغیر کو بھی متاثر کرے گی۔ اس کی وجہ سے، حوالہ سے گزر رہا ہے بڑی یا پیچیدہ ڈیٹا کی اقسام کے لیے کافی حد تک مؤثر ہے اور کاپی کرنے کی ضرورت سے گریز کرتا ہے۔



غیر ارادی ترمیم کو روکنے کے لیے، ایک فنکشن کو واضح طور پر const کے طور پر نامزد کیا جانا چاہیے۔ فنکشن ڈیکلریشن میں const کی ورڈ کو شامل کرنا، جیسا کہ 'int calculate(const int&a, const int&b)' میں ہے، اس کو پورا کرے گا۔



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





مندرجہ ذیل کوڈ پر غور کریں جو دونوں کو ظاہر کرتا ہے۔ دلیل پاس کرنے کے طریقے :

# شامل کریں

نام کی جگہ کا استعمال کرتے ہوئے std ;

باطل پاس بائی ویلیو ( int ایکس ) {

ایکس = 5 ;

cout << 'PassByValue کے اندر:' << ایکس << endl ;

}

باطل پاس بائی ریفرنس ( int اور ایکس ) {

ایکس = 5 ;

cout << 'PassByReference کے اندر:' << ایکس << endl ;

}

int مرکزی ( ) {

int نمبر 1 = 2 ، نمبر 2 = 2 ;

cout << 'فنکشن کال کرنے سے پہلے: num1=' << نمبر 1 << 'num2=' << نمبر 2 << endl ;

پاس بائی ویلیو ( نمبر 1 ) ;

پاس بائی ریفرنس ( نمبر 2 ) ;

cout << 'فنکشن کالز کے بعد: num1=' << نمبر 1 << 'num2=' << نمبر 2 << endl ;

واپسی 0 ;

}

مندرجہ بالا کوڈ میں، پہلا فنکشن، پاس بائی ویلیو , قدر کے لحاظ سے ایک عدد دلیل حاصل کرتا ہے۔ فنکشن کے اندر، ایک نیا انٹیجر متغیر بنایا جاتا ہے اور اسے ویلیو 5 تفویض کیا جاتا ہے۔ اصل انٹیجر غیر ترمیم شدہ رہتا ہے۔ دوسرا فنکشن، پاس بائی ریفرنس ، حوالہ کے ذریعہ ایک عددی دلیل حاصل کرتا ہے۔ اس صورت میں، فنکشن اصل متغیر کو براہ راست جوڑتا ہے۔



آؤٹ پٹ

جیسا کہ توقع کی گئی ہے، پہلی کال 5 آؤٹ پٹ کرتی ہے، لیکن اس کا اصل متغیر پر کوئی اثر نہیں ہوتا ہے۔ اس کے برعکس، دوسری کال num2 کی قدر کو 5 میں تبدیل کرتی ہے، جو حتمی بیان کے آؤٹ پٹ کو متاثر کرتی ہے۔

پاس بائی ویلیو بمقابلہ حوالہ سے گزرنا

1: فنکشن کو کال کرنے کا طریقہ

کے درمیان ایک فرق قدر سے گزرنا اور حوالہ سے گزر رہا ہے فنکشن کو کس طرح کہا جاتا ہے۔ کب قدر سے گزرنا , فنکشن کال میں متغیر کی قدر شامل ہونی چاہیے، جیسے `calculate(a, b)`۔ کب حوالہ سے گزر رہا ہے , فنکشن کال میں متغیر کا میموری ایڈریس شامل ہونا چاہیے، جس کی علامت ایمپرسینڈ کریکٹر، جیسے `calculate(&a, &b)` سے ہوتی ہے۔

2: ڈیٹا کی اقسام

عام طور پر، قدر سے گزرنا چھوٹی یا سادہ ڈیٹا کی اقسام کے ساتھ کام کرتے وقت، یا جب فنکشن کا مقصد اصل متغیر کو تبدیل کرنا نہیں ہوتا ہے تو سب سے زیادہ مناسب ہے۔ حوالہ سے گزرنا بڑی یا پیچیدہ ڈیٹا کی اقسام کے لیے زیادہ موزوں ہے، یا جب فنکشن کا مقصد اصل متغیر کی قدر میں ترمیم کرنا ہے۔

نتیجہ

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