C++ میں Null اور Nullptr میں کیا فرق ہے؟ (تفصیلی) - تمام اختلافات

 C++ میں Null اور Nullptr میں کیا فرق ہے؟ (تفصیلی) - تمام اختلافات

Mary Davis

"Nullptr" کو ایک کلیدی لفظ سمجھا جاتا ہے جو صفر کو ایڈریس کے طور پر ظاہر کرتا ہے، جبکہ "Null" ایک عدد کے طور پر صفر کی قدر ہے۔

بھی دیکھو: بوئنگ 767 بمقابلہ بوئنگ 777- (تفصیلی موازنہ) - تمام اختلافات

اگر آپ ایک پروگرامر ہیں، تو آپ کو معلوم ہوگا کہ بہتر کوڈ کرنے کے لیے کمپیوٹر کی زبانوں کو سمجھنا کتنا ضروری ہے۔ لیکن کبھی کبھی، یہ تھوڑا سا الجھا ہوا ہو سکتا ہے، اور آپ دو چیزوں کے درمیان گھل مل سکتے ہیں۔

اسی طرح کا معاملہ C++ زبان میں Null اور Nullptr کا ہے۔ آئیے میں آپ کو بتاتا ہوں کہ ان دونوں اصطلاحات کا کیا مطلب ہے اور ان کے افعال آپ کو ان کے فرق اور ان کے استعمال کو سمجھنے میں مدد کرنے کے لیے۔

آئیے اندر کودیں!

کمپیوٹر کی زبانیں کیا ہیں؟

کمپیوٹر کی زبانوں کو کوڈ یا نحو کے طور پر بیان کیا جا سکتا ہے جو پروگراموں اور مخصوص ایپلی کیشنز کو لکھنے کے لیے استعمال کیا جاتا ہے۔

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

یہ کمپیوٹر کی پروگرامنگ کو سمجھنے اور ان پر کام کرنے کے لیے ایجاد کیے گئے ہیں۔ عام طور پر، کمپیوٹر کی زبان کو تین اہم زمروں میں درجہ بندی کیا جا سکتا ہے:

  • اسمبلی زبان

    یہ مائیکرو پروسیسرز کے لیے استعمال ہونے والی کم سطح کی زبان سمجھی جاتی ہے۔ اور متعدد دیگر قابل پروگرام آلات۔ یہ دوسری نسل کی زبان ہے۔ یہ آپریٹنگ سسٹم لکھنے اور مختلف ڈیسک ٹاپ ایپلی کیشنز لکھنے کے لیے جانا جاتا ہے۔

  • مشینی زبان

    یہ مادری زبان پہلی نسل کی زبان ہے۔اسے مشین کوڈ یا یہاں تک کہ آبجیکٹ کوڈ بھی کہا جاتا ہے، جس میں بائنری ہندسوں کا ایک سیٹ 0 اور 1 ہوتا ہے۔ ان ہندسوں کو ایک کمپیوٹر سسٹم کے ذریعے سمجھا اور پڑھا جاتا ہے جو ان کی فوری تشریح کرتا ہے۔

  • اعلی سطحی زبان

    یہ پرانی زبانوں میں نقل پذیری کے مسائل کی وجہ سے قائم کیا گیا تھا۔ کوڈ منتقل نہیں کر سکا اس کا مطلب یہ ہے کہ کوڈ ایک مشین پر لکھا گیا تھا۔ یہ زبان سمجھنے میں آسان ہے اور یہ بہت صارف دوست بھی ہے۔

زبان کا وہ حصہ جسے کمپیوٹر سمجھتا ہے اسے "بائنری" کہا جاتا ہے۔ دوسری طرف، پروگرامنگ زبان کا بائنری میں ترجمہ "مرتب" کے طور پر جانا جاتا ہے۔

مختصر طور پر، پروگرامنگ زبانیں لوگوں کو کمپیوٹر کو ہدایات دینے کی اجازت دیتی ہیں تاکہ وہ انہیں پڑھ سکیں اور اس پر عمل کر سکیں۔ ہر کمپیوٹر کی زبان میں سی لینگویج سے لے کر ازگر تک اپنی الگ خصوصیات ہوتی ہیں۔

یہ زبانیں کمپیوٹرز کے لیے بڑے اور پیچیدہ ڈیٹا کو زیادہ موثر طریقے سے پروسیس کرنا آسان اور تیز تر بناتی ہیں۔ آج دنیا میں کئی پروگرامنگ زبانیں ہیں۔ ان میں سے کچھ میں Java، Python، HTML، C، C++، اور SQL شامل ہیں۔

C++ زبان کیا ہے؟

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

یہ ایک کراس پلیٹ فارم لینگویج ہے جو اعلیٰ کارکردگی کی ایپلی کیشنز بنانے کے لیے استعمال ہوتی ہے۔ C++ زبان قائم کی گئی۔Bjarne Stroustrup کی طرف سے، جو C زبان بنانے کا بھی ذمہ دار ہے۔ جیسا کہ اس کے نام سے ظاہر ہے، یہ زبان C زبان کی توسیع ہے۔

یہ پروگرامرز کو سسٹم کے وسائل اور میموری پر اعلیٰ کنٹرول حاصل کرنے کی اجازت دیتا ہے۔ آپ کو لگتا ہے کہ یہ پہلے ہی اپ ڈیٹ ہوچکا ہے۔ تاہم، زبان کو 2011، 2014 اور 2017 میں تین مرتبہ اپ ڈیٹ کیا گیا ہے۔

آج تک، C++ زبان کو اس کی نمایاں پورٹیبلٹی کی وجہ سے بہت سراہا جاتا ہے، جس سے تخلیق کاروں کو ایسے پروگرام تیار کرنے کی اجازت ملتی ہے جو مختلف آپریٹنگ سسٹمز یا پلیٹ فارمز پر مؤثر طریقے سے چل سکیں۔

بہت سے لوگ C++ کیوں استعمال کرتے ہیں؟

یہ زبان رائج ہے کیونکہ یہ ایک آبجیکٹ پر مبنی پروگرامنگ زبان ہے جو پروگراموں کو ایک واضح ڈھانچہ فراہم کرتی ہے اور کوڈ کو دوبارہ استعمال کرنے کی اجازت دے کر ترقیاتی اخراجات کو کم کرنے میں مدد کرتی ہے۔

اس کی اعلی کارکردگی کی وجہ سے، اس زبان کو گیمز، ڈیسک ٹاپ ایپس، براؤزرز، اور آپریٹنگ سسٹمز تیار کرنے کے لیے استعمال کیا جاتا ہے۔ 2

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

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

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

C اور C++ زبانوں میں ایک Null کریکٹر، ایک Null پوائنٹر، اور ایک Null اسٹیٹمنٹ ہوتا ہے (جس کی نمائندگی سیمی کالون (;)) کرتی ہے۔

Null میں کیا ہے C++؟

Null کو ایک بلٹ ان مستقل سمجھا جاتا ہے جو صفر کی قدر رکھتا ہے۔ یہ کمپیوٹر پروگرامنگ میں ایک مستقل اور ایک پوائنٹر دونوں ہے۔

ایک ڈیٹا بیس میں رہتے ہوئے، صفر ایک قدر ہے۔ قدر Null اشارہ کرتی ہے کہ کوئی قدر موجود نہیں ہے۔ جب Null کو قدر کے طور پر استعمال کیا جاتا ہے، تو یہ میموری کا مقام نہیں ہے۔

مزید برآں، Null کریکٹر کے بغیر، سٹرنگ مناسب طریقے سے ختم نہیں ہو سکے گی، جس کی وجہ سے بہت سے مسائل پیدا ہوتے ہیں۔ مختلف پروگرامنگ زبانوں میں Null کردار کے بہت سے مختلف استعمال ہوتے ہیں۔

سوال یہ ہے کہ آپ C++ میں Null کیسے لکھیں گے۔ ٹھیک ہے، اگر Null constant میں عددی قسم ہے، تو اسے ایک قسم کی قدر میں تبدیل کیا جا سکتا ہے۔

مثال کے طور پر، یہ حرف، "Null" ایک خاص مارکر کے طور پر Structured Query Language (SQL) میں استعمال ہوتا ہے تاکہ یہ ظاہر کیا جا سکے کہ ڈیٹا بیس میں ڈیٹا ویلیو موجود نہیں ہے۔ ایک رشتہ دار ڈیٹا بیس تب ہوتا ہے جب کسی مخصوص کالم میں کوئی قدر نامعلوم یا غائب ہو۔

مزید برآں، C# میں،ایک پروگرامنگ زبان، Null کا مطلب ہے "کوئی چیز نہیں"۔ اس زبان میں، یہ مستقل صفر کی طرح نہیں ہے۔

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

Null اور Zero کے درمیان فرق

چونکہ Null میں صفر کی قدر ہوتی ہے، لوگ اکثر اس بات پر الجھ جاتے ہیں کہ کوئی Null اور Zero میں فرق کیسے کرے گا۔

C++ میں Null صرف ایک میکرو ہے جو Null پوائنٹر مستقل کی وضاحت کرتا ہے اور عام طور پر صفر کی قدر ہوتی ہے۔ تاہم، Null آپ کو ایک اہم قدر دیتا ہے جس کی نمائندگی کرتا ہے کہ متغیر کا کوئی وزن نہیں ہے۔

جبکہ، زیرو بذات خود ایک قدر ہے، اور اسی طرح یہ پورے بہاؤ کی ترتیب میں رہے گا۔ دوسرے الفاظ میں، زیرو خود نمبر کی قدر ہے، جبکہ Null کا مطلب خالی ہے۔

آپ اسے ایک ریفریجریٹر کے لیے مخصوص جگہ کے طور پر سوچ سکتے ہیں ۔ اگر فریج موجود ہے لیکن اس میں کچھ نہیں ہے تو قیمت صفر ہے۔ دوسری طرف، اگر فریج کے لیے مختص جگہ میں بالکل بھی فریج نہیں ہے، تو قدر Null ہے۔

C++ میں Nullptr کا کیا مطلب ہے؟

"Nullptr" کلیدی لفظ Null پوائنٹر ویلیو کی نمائندگی کرتا ہے۔ آپ یہ بتانے کے لیے Null پوائنٹر ویلیو استعمال کریں گے کہ کوئی آبجیکٹ ہینڈل، اندرونی پوائنٹر، یا مقامی پوائنٹر کی قسم کسی چیز کی طرف اشارہ نہیں کرتی ہے۔

صرف پوائنٹر میموری کے مقامات کو روک سکتے ہیں، اور قدریں نہیں رکھ سکتیں۔

سب سے پہلے، ہمیں یہ سمجھنا ہوگا کہ پوائنٹر کیا ہے۔ یہ ایک متغیر ہے جو میموری کی جگہ رکھتا ہے۔

A Null پوائنٹر ایک ایسا پوائنٹر ہے جو جان بوجھ کر کسی چیز کا اشارہ نہیں کرتا ہے۔ اگر آپ کے پاس کوئی پتہ نہیں ہے جسے آپ کسی پوائنٹر کو تفویض کر سکتے ہیں، تو آپ Null استعمال کر سکتے ہیں۔ Null ویلیو پوائنٹرز والی ایپلی کیشنز میں میموری لیک ہونے اور کریش ہونے سے بچتی ہے۔

مزید برآں، Nullptr کو چیک کرنے کے لیے، آپ ایک پوائنٹر ویلیو کو شرط کے طور پر استعمال کر سکتے ہیں کہ آیا کوئی پوائنٹر C++ میں Null ہے یا نہیں۔ منطقی اظہار میں استعمال ہونے پر، Null پوائنٹرز کو غلط سمجھا جاتا ہے۔

لہذا، کوئی ایک دیئے گئے پوائنٹر کو if اسٹیٹمنٹ کی حالت میں رکھ سکتا ہے تاکہ یہ چیک کیا جا سکے کہ آیا یہ Null ہے۔ مختصراً، Nullptr ایک پوائنٹر قسم کا کلیدی لفظ ہے جو صفر ایک ایڈریس کے طور پر ظاہر کرتا ہے۔

ایک عام سوال یہ ہے کہ Nullptr کی ضرورت کیوں ہے جب پہلے سے ایک Null کریکٹر موجود ہے۔ اس کی وجہ یہ ہے کہ، C++11 میں، Nullptr ایک Null پوائنٹر مستقل ہے، اور اس کی ضرورت ہے کیونکہ یہ قسم کی حفاظت کو بہتر بناتا ہے۔

کیا Null اور Nullptr ایک جیسے ہیں؟

نہیں۔ وہ نہیں ہیں. ان کے اختلافات کو پہلے جاننے کے لیے نیچے دی گئی جدول کو دیکھیں۔

Nullptr Null
زیرو کی نمائندگی کرنے والا کلیدی لفظ زیرو کی قدر
زیرو کو ایڈریس کے طور پر ظاہر کرتا ہے قدر کو بطور ایک انٹیجر
نیا اور تجویز کردہ فنکشن پرانا اورفرسودہ فنکشن
سچ پوائنٹر کی قسم انٹیجر

مستقل صفر

<کے لیے ایک عرف کے طور پر لاگو کیا گیا 0>کلیدی الفاظ کو نوٹ کریں تاکہ آپ الجھن کا شکار نہ ہوں۔

Null کو ایک "مینی فیسٹ کنسٹنٹ" سمجھا جاتا ہے جو کہ اصل میں ایک عدد ہے اور ایک مضمر تبدیلی کی وجہ سے پوائنٹر کو تفویض کیا جا سکتا ہے۔

جبکہ Nullptr ایک کلیدی لفظ ہے جو خود وضاحتی قسم کی قدر کی نمائندگی کرتا ہے، اور یہ پوائنٹر میں تبدیل ہوسکتا ہے لیکن عدد میں نہیں۔ Nullptr عام طور پر ایک Null پوائنٹر ہے اور ہمیشہ ایک ہی رہے گا۔ اگر آپ اسے کسی عدد کو تفویض کرنے کی کوشش کرتے ہیں تو اس سے خرابیاں پیدا ہوں گی۔

اگر آپ کو اب بھی سمجھ نہیں آتی ہے تو یہ ویڈیو دیکھیں۔

یہ ویڈیو اس بات کی پوری طرح وضاحت کرتی ہے کہ آپ کو اسٹریمر کے ساتھ Null یا nullptr—کوڈ کب اور کب استعمال کرنا چاہیے۔

کیا آپ Null کی بجائے Nullptr استعمال کر سکتے ہیں؟

ہاں ۔ 1 خالی. Nullptr ایک محفوظ قسم کے پوائنٹر کی قدر دیتا ہے جو خالی پوائنٹر کی نمائندگی کرتا ہے۔

جبکہ کچھ لوگ Null استعمال کرنے سے گریز کرتے ہیں کیونکہ یہ نامناسب ہے ، یہ آج کل کم عام ہے کیونکہ بہت سے کوڈر Null کی بجائے Nullptr استعمال کرنے کی تجویز پر عمل کر رہے ہیں۔

اس کے علاوہ، آپ حوالہ استعمال کرنے سے پہلے یہ جانچنے کے لیے Nullptr کلیدی لفظ استعمال کر سکتے ہیں کہ آیا کوئی پوائنٹر یا ہینڈل حوالہ Null ہے یا نہیں۔

کیا آپ Nullptr کا حوالہ دے سکتے ہیں؟

آپ nullptr کا حوالہ دے سکتے ہیں۔ اگر آپ ایسا کرتے ہیں، تو آپ اس پتے پر ویلیو تک رسائی حاصل کر سکتے ہیں جس کی طرف پوائنٹر اشارہ کر رہا ہے۔

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

تاہم، آپ یہ C زبان میں نہیں کر سکتے ہیں ۔ 1 ایک نال پوائنٹر عام طور پر رن ​​ٹائم غلطی یا فوری پروگرام کے کریش کی طرف جاتا ہے۔

بھی دیکھو: کیمن، مگرمچھ اور مگرمچھ کے درمیان کیا فرق ہے؟ (فرق ​​کی وضاحت) - تمام اختلافات

کمپیوٹر پروگرامنگ میں، ڈیریفرنس آپریٹر وہ ہے جو پوائنٹر متغیر پر کام کرتا ہے۔ یہ میموری میں مقام کی قدر واپس کرتا ہے جس کی طرف متغیر کی قدر کی طرف اشارہ کیا گیا ہے ۔ C++ پروگرامنگ لینگویج میں، آپریٹڈ ڈیفرینس کو ستارے (*) کے ساتھ علامت کیا جاتا ہے۔

حتمی خیالات

کوئی بھی Null کو ایک میکرو کے طور پر بیان کر سکتا ہے جو صفر پوائنٹر پر حاصل ہوتا ہے، جس کا مطلب ہے کہ اس متغیر کا کوئی پتہ نہیں ہے۔ Null C زبان میں ایک پرانا میکرو ہے جسے C++ میں منتقل کیا گیا ہے۔

دریں اثنا، Nullptr C++11 میں متعارف کرایا گیا ایک نیا ورژن ہے اور اس کا مطلب Null کے متبادل کے طور پر ہے۔

لہذا، آج، یہ تجویز کیا جاتا ہے کہ آپ Nullptr کو ان جگہوں پر استعمال کرنا شروع کریں جہاں آپ ماضی میں یا اس تحریر کے مطابق بھی Null استعمال کرتے تھے۔

    اس مضمون کا مختصر ورژن دیکھنے کے لیے یہاں کلک کریں۔

    Mary Davis

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