تفاوت بین Null و Nullptr در C++ چیست؟ (جزئیات) - همه تفاوت ها
فهرست مطالب
"Nullptr" یک کلمه کلیدی در نظر گرفته می شود که صفر را به عنوان یک آدرس نشان می دهد، در حالی که "Null" مقدار صفر به عنوان یک عدد صحیح است.
اگر برنامه نویس هستید، ممکن است بدانید که درک زبان های کامپیوتر برای کدنویسی بهتر چقدر مهم است. اما گاهی اوقات، ممکن است کمی گیج کننده باشد و ممکن است بین دو چیز قاطی شوید.
همچنین ببینید: در مقابل شخصی املاک خصوصی - تفاوت چیست؟ (توضیح داده شده) - همه تفاوت هادر مورد Null و Nullptr در زبان C++ نیز مشابه است. اجازه دهید به شما بگویم که این دو اصطلاح به چه معنا هستند و عملکرد آنها چیست تا به شما در درک تفاوت و کاربرد آنها کمک کند.
زبان های کامپیوتر چیست؟
زبان های رایانه را می توان به عنوان کد یا نحوی که برای نوشتن برنامه ها و برنامه های کاربردی خاص استفاده می شود، تعریف کرد.
در اصل، این یک زبان رسمی است که برای برقراری ارتباط با رایانه ها استفاده می شود. به همین ترتیب، کشورهای مختلف زبانهای مختلفی دارند که به افراد کمک میکند افکار خود را به اشتراک بگذارند، رایانهها نیز همینطور هستند.
این زبانها برای درک برنامهنویسی رایانه و کار بر روی آنها اختراع شدهاند. به طور کلی، زبان کامپیوتر را می توان به سه دسته اصلی طبقه بندی کرد:
- زبان اسمبلی
این زبان سطح پایینی است که برای ریزپردازنده ها استفاده می شود. و چندین دستگاه قابل برنامه ریزی دیگر. این یک زبان نسل دوم است. برای نوشتن یک سیستم عامل و نوشتن برنامه های دسکتاپ مختلف شناخته شده است.
- زبان ماشین
این زبان مادری یک زبان نسل اول است.به آن کد ماشین یا حتی کد شی می گویند که دارای مجموعه ای از ارقام دودویی 0 و 1 است. این ارقام توسط یک سیستم کامپیوتری که به سرعت آنها را تفسیر می کند درک و خوانده می شوند.
- زبان سطح بالا
این به دلیل مشکلات قابل حمل در زبان های قدیمی ایجاد شد. کد نمیتوانست منتقل کند این بدان معناست که کد روی یک دستگاه نوشته شده است. این زبان به راحتی قابل درک است و همچنین بسیار کاربرپسند است.
بخشی از زبانی که رایانه میفهمد به عنوان "دودویی" شناخته میشود. از سوی دیگر، ترجمه زبان برنامه نویسی به باینری به عنوان "کامپایل" شناخته می شود.
به طور خلاصه، زبان های برنامه نویسی به افراد این امکان را می دهند که دستورالعمل هایی را به رایانه ها بدهند تا بتوانند آنها را بخوانند و اجرا کنند. هر زبان کامپیوتری ویژگیهای متمایز خود را دارد، از زبان C تا پایتون.
این زبانها پردازش دادههای بزرگ و پیچیده را با کارآمدتر آسانتر و سریعتر میکنند. امروزه در جهان چندین زبان برنامه نویسی وجود دارد. تعدادی از این موارد عبارتند از جاوا، پایتون، HTML، C، C++ و SQL.
زبان C++ چیست؟
زبان ++C یکی از محبوب ترین زبان های برنامه نویسی در جهان است. این زبان را در سیستم عامل ها، رابط های کاربری گرافیکی و سیستم های تعبیه شده در دنیای امروز پیدا خواهید کرد.
این یک زبان چند پلتفرمی است که برای ایجاد برنامه های کاربردی با کارایی بالا استفاده می شود. زبان C++ ایجاد شدتوسط Bjarne Stroustrup، که همچنین مسئول ایجاد زبان C است. همانطور که نامش واضح است، این زبان پسوند زبان C است.
به برنامه نویسان اجازه می دهد تا کنترل بالایی بر منابع و حافظه سیستم داشته باشند. ممکن است فکر کنید قبلاً بهروزرسانی شده است. با این حال، این زبان سه بار در سال های 2011، 2014 و 2017 به روز شده است. از C++11، C++14، به C++17 رفت.
تا به امروز، زبان C++ به دلیل قابل حمل بودن قابل توجه آن بسیار مورد استقبال قرار گرفته است و به سازندگان اجازه می دهد برنامه هایی را توسعه دهند که بتوانند به طور موثر بر روی سیستم عامل ها یا پلتفرم های مختلف اجرا شوند.
چرا بسیاری از C++ استفاده می کنند؟
این زبان رایج است زیرا یک زبان برنامه نویسی شی گرا است که ساختار واضحی را برای برنامه ها فراهم می کند و با اجازه دادن به استفاده مجدد از کد به کاهش هزینه های توسعه کمک می کند.
به دلیل کارایی بالا، این زبان برای توسعه بازی ها، برنامه های دسکتاپ، مرورگرها و سیستم عامل ها استفاده می شود. یکی دیگر از ویژگی های این زبان این است که قابل حمل است و به افراد اجازه می دهد تا برنامه هایی ایجاد کنند که بتوانند با چندین پلتفرم سازگار شوند.
اگرچه به عنوان یکی از چالش برانگیزترین زبانها برای یادگیری شناخته شده است، اما مزایای خود را دارد. به دلیل زبان چند پارادایم و عملکردهای نحوی پیشرفته تر، درک آن از دیگران چالش برانگیزتر است.
اگر بتوانید زبان C++ را یاد بگیرید، یادگیری آن بسیار بیشتر می شودسایر زبان های برنامه نویسی بعد از این یکی مانند جاوا و پایتون.
به طور خلاصه، C++ یک زبان برنامه نویسی همه منظوره است، یک زبان برنامه نویسی سطح متوسط است که کدنویسی آن را به سبک C ممکن می کند. در برخی موارد، شما می تواند کدنویسی را در هر فرمت انجام دهد و C++ را به عنوان مثالی از یک زبان ترکیبی تبدیل کند .
زبان های C و C++ دارای یک کاراکتر Null، یک اشاره گر Null و یک دستور Null (که با نقطه ویرگول (;) نشان داده می شود.
Null در چیست؟ C++؟
Null یک ثابت داخلی در نظر گرفته می شود که مقدار صفر را نگه می دارد. این هم یک ثابت و هم یک اشاره گر در برنامه نویسی کامپیوتر است.
در حالی که در یک پایگاه داده، صفر یک مقدار است. مقدار Null نشان می دهد که هیچ مقداری وجود ندارد. وقتی Null به عنوان یک مقدار استفاده می شود، یک مکان حافظه نیست.
علاوه بر این، بدون کاراکتر Null، یک رشته نمی تواند به طور مناسب خاتمه یابد، که منجر به مشکلات زیادی می شود. کاراکتر Null در زبان های برنامه نویسی مختلف کاربردهای متفاوتی دارد.
سوال این است که چگونه Null را در C++ بنویسید. خوب، اگر یک ثابت Null دارای یک نوع عدد صحیح باشد، می توان آن را به یک مقدار مرتب سازی تبدیل کرد.
به عنوان مثال، این کاراکتر، "تهی"، در زبان پرس و جو ساختاریافته (SQL) به عنوان یک نشانگر خاص برای نشان دادن اینکه یک مقدار داده در پایگاه داده وجود ندارد استفاده می شود. پایگاه داده رابطه ای زمانی است که یک مقدار در یک ستون خاص ناشناخته یا گم شده باشد.
به علاوه، در سی شارپ،یک زبان برنامه نویسی، Null مخفف "بدون شی" است. در این زبان، با ثابت صفر یکی نیست.
اما در زبان C++، کاراکتر Null یک مقدار اشاره گر رزرو شده منحصر به فرد است که به هیچ شی داده معتبری اشاره نمی کند. همچنین، در زبان C++، توابع Null تنها راهی برای تخصیص مقدار به متغیرهای اشاره گر هستند.
تمایز بین Null و Zero
از آنجایی که Null مقدار صفر را دارد، مردم اغلب در مورد اینکه چگونه می توان بین Null و Zero تفاوت قائل شد گیج می شود.
Null در C++ فقط یک ماکرو است که یک ثابت اشاره گر Null را تعریف می کند و معمولاً مقدار صفر است. با این حال، Null مقدار قابل توجهی به شما می دهد که نشان می دهد متغیر وزنی ندارد.
در حالی که، صفر خود یک مقدار است، و به این ترتیب است که در سراسر دنباله جریان باقی می ماند. به عبارت دیگر، صفر خود مقدار عددی است، در حالی که Null به معنای خالی است.
شما می توانید آن را به عنوان یک فضای مشخصی که برای یخچال اختصاص داده شده است در نظر بگیرید . اگر یخچال آنجا باشد اما چیزی در آن نباشد، مقدار آن صفر است. از طرف دیگر، اگر فضای اختصاص داده شده برای یخچال اصلا یخچال نداشته باشد، مقدار Null است.
Nullptr در C++ به چه معناست؟
کلمه کلیدی "Nullptr" یک مقدار اشاره گر Null را نشان می دهد. شما می توانید از مقدار اشاره گر تهی برای نشان دادن اینکه دسته شی، اشاره گر داخلی یا نوع اشاره گر بومی به یک شی اشاره نمی کند استفاده کنید.
فقط اشارهگرها میتوانند مکانهای حافظه را نگه دارند، و مقادیر نمیتوانند.
ابتدا، ما باید بدانیم اشارهگر چیست. این متغیری است که یک مکان حافظه را نگه میدارد.
اشارهگر تهی اشارهگری است که عمداً به هیچ علامتی نمیدهد. اگر آدرسی ندارید که بتوانید به یک اشاره گر اختصاص دهید، می توانید از Null استفاده کنید. مقدار Null از نشت حافظه و خرابی در برنامه هایی که نشانگر دارند جلوگیری می کند.
علاوه بر این، برای بررسی Nullptr، می توانید از یک مقدار اشاره گر به عنوان شرط برای بررسی اینکه آیا یک اشاره گر در C++ Null است استفاده کنید. هنگامی که در عبارات منطقی استفاده می شود، نشانگرهای تهی به عنوان نادرست ارزیابی می شوند.
بنابراین، میتوان یک اشارهگر معین را در شرط if قرار داد تا بررسی شود که آیا Null است یا خیر. به طور خلاصه، Nullptr یک کلمه کلیدی از نوع اشاره گر است که صفر را به عنوان یک آدرس نشان می دهد.
یک سوال رایج این است که چرا وقتی یک کاراکتر Null وجود دارد، Nullptr مورد نیاز است. دلیل آن این است که، در C++11، Nullptr یک ثابت اشاره گر Null است و به این دلیل ضروری است که ایمنی نوع را بهبود می بخشد.
آیا Null و Nullptr یکسان هستند؟
خیر. آنها نیستند. این جدول زیر را بررسی کنید تا ابتدا تفاوت آنها را بدانید.
Nullptr | Null |
عملکرد جدیدتر و پیشنهادی | قدیمتر وتابع منسوخ شده |
نوع اشاره گر واقعی | به عنوان نام مستعار برای عدد صحیح صفر ثابت |
Null یک "ثابت آشکار" در نظر گرفته می شود که در واقع یک عدد صحیح است و می تواند به دلیل تبدیل ضمنی به یک اشاره گر نسبت داده شود.
در حالی که Nullptr یک کلمه کلیدی است که مقداری از نوع خود تعریف شده را نشان می دهد و می تواند به یک اشاره گر تبدیل شود اما نه به اعداد صحیح. Nullptr به طور کلی یک نشانگر Null است و همیشه یکی خواهد بود. اگر سعی کنید آن را به یک عدد صحیح اختصاص دهید، باعث خطا می شود.
اگر هنوز متوجه نشدید، این ویدیو را تماشا کنید.
این ویدیو به طور کامل توضیح میدهد که چه و چه زمانی باید از کد Null یا nullptr به همراه استریمر استفاده کنید.
همچنین ببینید: تفاوت بین "دلم برایت تنگ شده" و "دلم برایت تنگ شده است" (معنا را بدان!) - همه تفاوت هاآیا میتوانید به جای Null از Nullptr استفاده کنید؟
بله . در حالی که آنها یکسان نیستند، راهی برای استفاده از Nullptr به جای Null وجود دارد.
علاوه بر این، Nullptr یک کلمه کلیدی جدید در C++ است که می تواند جایگزینی برای خالی. Nullptr یک مقدار اشاره گر نوع ایمن می دهد که نشانگر یک اشاره گر خالی است.
در حالی که برخی از استفاده از Null به دلیل نامناسب بودن اجتناب می کنند، امروزه کمتر رایج است زیرا بسیاری از کدنویسان پیشنهاد استفاده از Nullptr را به جای Null دنبال می کنند.
علاوه بر این، میتوانید از کلمه کلیدی Nullptr برای آزمایش اینکه آیا یک اشارهگر یا مرجع هندل قبل از استفاده از مرجع Null است یا خیر استفاده کنید.
آیا می توانید یک Nullptr را حذف کنید؟
شما می توانید یک nullptr را ارجاع دهید. اگر این کار را انجام دهید، می توانید به مقدار در آدرسی که اشاره گر به آن اشاره می کند دسترسی پیدا کنید.
در زبانهای کامپیوتری، ارجاعزدایی برای دسترسی یا دستکاری دادههای موجود در مکان حافظه که توسط یک اشارهگر به آن اشاره میشود، استفاده میشود.
اما شما نمی توانید این کار را در زبان C انجام دهید . یک اشاره گر تهی به یک شی معنی دار اشاره نمی کند، تلاشی برای عدم ارجاع، که دسترسی به داده های ذخیره شده است. یک اشاره گر تهی معمولاً منجر به خطای زمان اجرا یا خرابی فوری برنامه می شود.
در برنامه نویسی کامپیوتری، عملگر عدم ارجاع چیزی است که بر روی یک متغیر اشاره گر عمل می کند. مقدار مکان موجود در حافظه را که با مقدار متغیر به آن اشاره شده است برمی گرداند. در زبان برنامه نویسی C++، ارجاع عمل شده با علامت ستاره (*) نشان داده می شود.
افکار نهایی
می توان یک Null را به عنوان یک ماکرو تعریف کرد که به یک اشاره گر صفر می رسد، به این معنی که هیچ آدرسی برای آن متغیر وجود ندارد. Null یک ماکرو قدیمی در زبان C است که به C++ منتقل شده است.
در همین حال، Nullptr نسخه جدیدتری است که در C++11 معرفی شده است و به عنوان جایگزینی برای Null در نظر گرفته شده است.
بنابراین، امروز توصیه میشود از Nullptr در مکانهایی استفاده کنید که در گذشته یا حتی در زمان نوشتن این مقاله به جای آن از Null استفاده میکردید.
برای مشاهده نسخه کوتاه شده این مقاله اینجا را کلیک کنید.