خرابی: C++ میں int کا حوالہ نہیں دیا جا سکتا

Khraby C My Int Ka Hwal N Y Dya Ja Skta



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

مثال 1: Dereferencing Int







اس کوڈ میں، ہم C++ میں 'int' کا حوالہ دینے کی کوشش کریں گے۔ اب، ہم صرف 'iostream' ہیڈر فائل کو شامل کرتے ہیں تاکہ متعین افعال کو استعمال کیا جا سکے۔ اس کے نیچے، ہم 'namespace std' کا استعمال کرتے ہیں اور یہاں 'main()' طریقہ استعمال کرتے ہیں۔ پھر، ہم 'int' ڈیٹا کی قسم کے ساتھ 'my_num' متغیر کا اعلان کرتے ہیں اور اس متغیر کو '99' تفویض کرتے ہیں۔



اب، ہم 'int' ڈیٹا کی قسم کی 'my_value' کا اعلان کرتے ہیں اور اسے '*my_num' سے شروع کرتے ہیں جس کا مطلب ہے کہ ہم 'my_num' متغیر کو ڈیریفرنس کرنے کی کوشش کر رہے ہیں جو کہ 'int' ڈیٹا ٹائپ کا ہے۔ کمپائل کرتے وقت اس لائن پر ایرر پیدا ہوتا ہے کیونکہ ہم 'int' کا حوالہ نہیں دے سکتے۔ ہم اس قدر کو ظاہر کرنا چاہتے ہیں جو ہمیں int کی ڈیریفرنسنگ کے بعد حاصل ہوتی ہے، اس لیے ہم 'cout' رکھیں جس میں ہم نے 'my_value' متغیر کو شامل کیا۔



کوڈ 1:





# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
اہم int ( ) {
int my_num = 99 ;
int my_value = * my_num؛
cout << 'انٹ کا حوالہ دینے سے ہمیں جو قدر ملتی ہے وہ یہ ہے:' << میری_قدر << endl
واپسی 0 ;
}

آؤٹ پٹ:



یہاں، ہم محسوس کر سکتے ہیں کہ کوئی قدر ظاہر نہیں کی گئی ہے اور ایک خرابی پیدا ہوتی ہے جو کہتی ہے کہ unary '*' کی غلط قسم کی دلیل ہے۔ اس کا مطلب ہے کہ ہم C++ میں 'int' کا حوالہ نہیں دے سکتے۔

حل 1: بغیر کسی حوالہ کے

یہاں، ہم بغیر کسی حوالہ کے براہ راست عددی قدر حاصل کریں گے۔ ہم 'iostream' ہیڈر فائل درآمد کرتے ہیں کیونکہ کچھ فنکشن کی تعریفیں موجود ہیں۔ پھر، ہم 'using' کلیدی لفظ کے ساتھ 'namespace std' ٹائپ کرتے ہیں اور پھر یہاں 'main()' طریقہ کو کال کرتے ہیں۔ اب، ہم '99' کی قدر کے ساتھ 'int' ڈیٹا ٹائپ کے 'my_num' متغیر کو شروع کرتے ہیں۔

پھر، ہم 'my_value' کے نام سے ایک اور متغیر شروع کرتے ہیں اور اسے 'my_num' متغیر کے ساتھ تفویض کرتے ہیں جس میں عددی نمبر ہوتا ہے۔ اس کے بعد، ہم یہ عددی قدر براہ راست حاصل کرتے ہیں بغیر کسی حوالہ کے 'cout' میں 'my_value' رکھ کر۔ یہ عددی قدر حاصل کرتا ہے اور دکھاتا ہے۔

کوڈ 1:

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
اہم int ( ) {
int my_num = 99 ;
int my_value = my_num;
cout << 'انٹ کا حوالہ دیئے بغیر ہمیں جو قدر ملتی ہے وہ ہے:' << میری_قدر << endl
واپسی 0 ;
}

آؤٹ پٹ:

انٹیجر ویلیو یہاں پیش کی گئی ہے جو ہمیں اپنے C++ کوڈ میں ڈیریفرنس کیے بغیر حاصل ہوتی ہے۔ ہم براہ راست اس عددی قدر تک رسائی حاصل کرتے ہیں اور اسے ظاہر کرتے ہیں۔

حل 2: پوائنٹر کا حوالہ دے کر

'iostream' ہیڈر فائل میں فنکشن کی کچھ تعریفیں ہوتی ہیں۔ ہم نے انہیں درآمد کیا. اس کے بعد، ہم یہاں 'namespace std' اور 'using' کلیدی لفظ ٹائپ کرنے کے بعد 'main()' فنکشن چلاتے ہیں۔ 'int' ڈیٹا کی قسم کا 'my_num' متغیر اب '99' کی قدر کے ساتھ شروع کیا گیا ہے۔

اس کے بعد، ہم ایک 'my_ptr' پوائنٹر شروع کرتے ہیں اور اس پوائنٹر کو 'my_num' متغیر کا پتہ تفویض کرتے ہیں۔ اس کے نیچے، ہم پوائنٹر کا حوالہ دیتے ہیں اور اس کے ذریعے حاصل ہونے والی قدر کو 'my_value' متغیر کو تفویض کرتے ہیں کیونکہ ہم نے 'my_value' کو '*my_ptr' کے ساتھ شروع کیا تھا۔ اب، ہم 'cout' رکھتے ہیں جس میں ہم 'my_value' متغیر کو انٹیجر ویلیو کو ظاہر کرنے کے لیے پاس کرتے ہیں جو ہمیں پوائنٹر کو ڈیریفرنس کرنے سے حاصل ہوتا ہے۔

کوڈ 2:

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
اہم int ( ) {
int my_num = 99 ;
int * my_ptr = اور my_num؛
int my_value = * my_ptr;
cout << 'انٹ کی قیمت جو ہمیں پوائنٹر کو ڈیریفرنس کرنے سے ملتی ہے وہ یہ ہے:' << میری_قدر << endl
واپسی 0 ;
}

آؤٹ پٹ:

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

مثال 2: Dereferencing Int

آئیے اس کوڈ میں C++ میں 'int' کا حوالہ دینے کی کوشش کرتے ہیں۔ ان فنکشنز کو استعمال کرنے کے لیے جو 'iostream' میں بیان کیے گئے ہیں، ہمیں صرف 'iostream' ہیڈر فائل کو شامل کرنے کی ضرورت ہے۔ یہ وہ جگہ ہے جہاں ہم 'namespace std' استعمال کرتے ہیں اور 'main()' فنکشن کو کال کرتے ہیں۔ اگلا، ہم 'a' متغیر بناتے ہیں اور اسے '75' کی قدر کے ساتھ 'int' ڈیٹا ٹائپ دیتے ہیں۔

اس کے نیچے، ہم 'newPointer' کے نام سے ایک پوائنٹر بناتے ہیں اور '&' کی مدد سے اس پوائنٹر کو 'a' متغیر کا پتہ تفویض کرتے ہیں۔ اس کے بعد، ہم ذیل میں 'num' متغیر کو '*a' سے شروع کرتے ہیں جو اس بات کی نشاندہی کرتا ہے کہ ہم 'a' متغیر کو ڈیریفرنس کرنے کی کوشش کر رہے ہیں جو کہ 'int' ڈیٹا کی قسم کا ہے۔ چونکہ ہم 'int' کا حوالہ نہیں دے سکتے، اس لیے اب تالیف کے دوران اس لائن پر ایک ایرر پیدا ہوتا ہے۔ اس کے بعد، ہم 'cout' کو بھی استعمال کرتے ہیں جس میں ہم 'num' متغیر کو شامل کرتے ہیں۔

کوڈ 2:

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
اہم int ( ) {
int a = 75 ;
int * نیا پوائنٹر = اور a
int نمبر = * a
cout << 'انٹ کو ڈیریفرنس کرنے والی قدر یہ ہے:' << ایک پر << endl
واپسی 0 ;
}

آؤٹ پٹ:

یہاں، ہم دیکھ سکتے ہیں کہ کوئی ویلیو نہیں دکھائی گئی ہے اور ایک ایرر میسج ظاہر ہوتا ہے جس میں 'انیلیڈ ٹائپ پیرامیٹر آف unary'*' ظاہر ہوتا ہے۔ اس سے ظاہر ہوتا ہے کہ C++ میں 'int' کا حوالہ نہیں دیا جا سکتا۔

حل 1: بغیر کسی حوالہ کے

ہمیں فوری طور پر عددی قدر حاصل کرنے کے لیے ڈیریفرنس کی ضرورت نہیں ہوگی۔ ہم اسے درآمد کرتے ہیں کیونکہ 'iostream' ہیڈر فائل میں فنکشن کی کچھ تعریفیں ہوتی ہیں۔ 'main()' فنکشن کو 'using' اور 'namespace std' کلیدی الفاظ داخل کرنے کے بعد شروع کیا جاتا ہے۔ 'int' ڈیٹا کی قسم کا 'a' متغیر اب '75' کی قدر کے ساتھ شروع کیا گیا ہے۔ اس کے بعد، ہم 'a' کو 'cout' میں داخل کرتے ہیں تاکہ بغیر کسی حوالہ کے فوری طور پر اس عددی قدر کو حاصل کیا جا سکے۔ یہ عددی قدر کو بازیافت کرتا ہے اور اسے یہاں دکھاتا ہے۔

کوڈ 1:

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
اہم int ( ) {
int a = 75 ;
cout << 'جو قدر ہمیں بغیر کسی حوالہ کے حاصل ہوتی ہے وہ ہے:' << a << endl
واپسی 0 ;
}

آؤٹ پٹ:

انٹیجر ویلیو جو ہمارے C++ کوڈ سے بغیر کسی حوالہ کے حاصل کی گئی ہے یہاں پیش کی گئی ہے۔ یہ عددی قدر فوری طور پر قابل رسائی ہے اور یہاں دکھائی گئی ہے۔

حل 2:

ہم 'iostream' ہیڈر فائل درآمد کرتے ہیں جس میں فنکشن کی کچھ تعریفیں ہوتی ہیں۔ یہاں، ہم 'main()' فنکشن کو انجام دینے سے پہلے 'namespace std' اور 'using' کلیدی لفظ ٹائپ کرتے ہیں۔ '75' کی قدر 'a' متغیر کو تفویض کی گئی ہے۔

اس کے بعد، ہم 'mypointer' نامی ایک پوائنٹر کا اعلان کرتے ہیں اور اسے 'a' متغیر کے ایڈریس کے ساتھ شروع کرتے ہیں۔ اس کے نیچے، ہم پوائنٹر کا حوالہ دیتے ہیں اور اس سے حاصل ہونے والی قدر کو 'نتیجہ' متغیر کو تفویض کرتے ہیں جب ہم '*mypointer' کے ساتھ 'نتیجہ' شروع کرتے ہیں۔ پوائنٹر کو ڈیریفرنس کرنے کے بعد، ہم 'cout' کمانڈ دیتے ہیں اور عددی قدر ظاہر کرنے کے لیے 'نتیجہ' متغیر کو پاس کرتے ہیں۔

کوڈ 2:

# شامل کریں
نام کی جگہ کا استعمال کرتے ہوئے std؛
اہم int ( ) {
int a = 75 ;
int * mypointer = اور a
int نتیجہ = * mypointer
cout << 'پوائنٹر کا حوالہ دینے سے ہمیں جو قدر ملتی ہے وہ یہ ہے:' << نتیجہ << endl
واپسی 0 ;
}

آؤٹ پٹ:

C++ میں ڈیریفرنسنگ کو لاگو کرنے کی یہ مناسب تکنیک ہے۔ یہ انٹیجر ویلیو کو رینڈر کرتا ہے جو ہم نے 'int' کو ڈیریفرنس کرنے کے بجائے پوائنٹر کو ڈیریفرنس کرنے کے بعد حاصل کیا تھا۔

نتیجہ

ہم نے دریافت کیا کہ جب ہم C++ میں 'int' کا حوالہ دے کر قدر حاصل کرنے کی کوشش کرتے ہیں، تو 'invalid type parameter of unary '*' ہونے والی int' ایرر آجائے گی جس کا مطلب ہے کہ 'int کو C++ میں ڈیریفرنس نہیں کیا جا سکتا'۔ ہم نے اس خرابی کا حل بھی بتایا۔ ہم نے وہ کوڈ استعمال کیا جس میں غلطیاں ہوئیں اور وہ کوڈز جن میں ہم نے اس گائیڈ میں اس غلطی کا حل فراہم کیا تھا۔