C++ හි Null සහ Nullptr අතර වෙනස කුමක්ද? (විස්තරාත්මක) - සියලු වෙනස්කම්

 C++ හි Null සහ Nullptr අතර වෙනස කුමක්ද? (විස්තරාත්මක) - සියලු වෙනස්කම්

Mary Davis

“Nullptr” යනු ලිපිනයක් ලෙස බිංදුව නිරූපණය කරන මූල පදයක් ලෙස සලකනු ලබන අතර, “Null” යනු පූර්ණ සංඛ්‍යාවක් ලෙස ශුන්‍ය අගයයි.

ඔබ ක්‍රමලේඛකයෙක් නම්, වඩා හොඳ කේත කිරීමට පරිගණක භාෂා තේරුම් ගැනීම කොතරම් වැදගත් දැයි ඔබ දැන සිටිය හැක. නමුත් සමහර විට, එය තරමක් ව්‍යාකූල විය හැකි අතර, ඔබ කරුණු දෙකක් අතර මිශ්‍ර විය හැකිය.

C++ භාෂාවේ Null සහ Nullptr සඳහාද සමාන වේ. මෙම පද දෙකේ තේරුම සහ ඒවායේ ක්‍රියාකාරිත්වය ඔබට ඒවායේ වෙනස සහ ඒවායේ භාවිතය තේරුම් ගැනීමට උපකාර කිරීමට මම ඔබට කියමි.

අපි කෙලින්ම කිමිදෙමු!

පරිගණක භාෂා යනු මොනවාද?

පරිගණක භාෂා යනු ක්‍රමලේඛ සහ විශේෂිත යෙදුම් ලිවීමට භාවිතා කරන කේත හෝ සින්ටැක්ස් ලෙස අර්ථ දැක්විය හැක.

මූලික වශයෙන්, එය පරිගණක සමඟ සන්නිවේදනය කිරීමට භාවිතා කරන විධිමත් භාෂාවකි. ඒ ආකාරයෙන්ම, විවිධ රටවල මිනිසුන්ට සිතුවිලි බෙදා ගැනීමට උපකාර වන විවිධ භාෂා ඇත, එසේම පරිගණක ද ඇත.

මෙය පරිගණකයේ ක්‍රමලේඛනය තේරුම් ගැනීමට සහ ඒවා මත ක්‍රියා කිරීමට නිර්මාණය කර ඇත. සාමාන්‍යයෙන්, පරිගණක භාෂාව ප්‍රධාන කාණ්ඩ තුනකට වර්ග කළ හැක:

  • එකලස් භාෂාව

    මෙය මයික්‍රොප්‍රොසෙසර සඳහා භාවිතා වන පහත් මට්ටමේ භාෂාවක් ලෙස සැලකේ. සහ වෙනත් වැඩසටහන්ගත කළ හැකි උපාංග කිහිපයක්. එය දෙවන පරම්පරාවේ භාෂාවකි. එය මෙහෙයුම් පද්ධතියක් ලිවීම සහ විවිධ ඩෙස්ක්ටොප් යෙදුම් ලිවීම සඳහා ප්රසිද්ධය.

  • යන්ත්‍ර භාෂාව

    මෙම මව් භාෂාව පළමු පරම්පරාවේ භාෂාවකි.ද්විමය ඉලක්කම් 0 සහ 1 කට්ටලයක් සහිත එය යන්ත්‍ර කේතය හෝ වස්තු කේතය ලෙස හැඳින්වේ. මෙම ඉලක්කම් ඉක්මනින් අර්ථකථනය කරන පරිගණක පද්ධතියක් මඟින් තේරුම් ගෙන කියවා ඇත.

  • ඉහළ මට්ටමේ භාෂාව

    මෙය පැරණි භාෂා වල අතේ ගෙන යා හැකි ගැටළු හේතුවෙන් ස්ථාපිත කරන ලදී. කේතයට මාරු කළ නොහැකි විය මෙයින් අදහස් කළේ කේතය එක් යන්ත්‍රයක ලියා ඇති බවයි. මෙම භාෂාව තේරුම් ගැනීමට පහසු වන අතර ඉතා පරිශීලක-හිතකාමී වේ.

පරිගණකයකට තේරෙන භාෂාවේ කොටස “ද්විමය” ලෙස හැඳින්වේ. අනෙක් අතට, ක්‍රමලේඛන භාෂාව ද්විමය භාෂාවට පරිවර්තනය කිරීම "සම්පාදනය" ලෙස හැඳින්වේ.

කෙටියෙන් කිවහොත්, ක්‍රමලේඛන භාෂා මඟින් මිනිසුන්ට පරිගණක වෙත උපදෙස් ලබා දීමට ඉඩ සලසයි, එවිට ඔවුන්ට ඒවා කියවා ක්‍රියාත්මක කළ හැකිය. C භාෂාවේ සිට python දක්වා සෑම පරිගණක භාෂාවකටම ආවේණික වූ ලක්ෂණ ඇත.

මෙම භාෂා පරිගණක සඳහා විශාල හා සංකීර්ණ දත්ත වඩාත් කාර්යක්ෂමව සැකසීමට පහසු සහ වේගවත් කරයි. අද ලෝකයේ ක්‍රමලේඛන භාෂා කිහිපයක් තිබේ. මේවායින් කිහිපයක් Java, Python, HTML, C, C++, සහ SQL ඇතුළත් වේ.

C++ භාෂාවක් යනු කුමක්ද?

C++ භාෂාව ලොව ජනප්‍රියම ක්‍රමලේඛන භාෂාවකි. අද ලෝකයේ මෙහෙයුම් පද්ධති, චිත්‍රක පරිශීලක අතුරුමුහුණත් සහ කාවැද්දූ පද්ධති තුළ ඔබ මෙම භාෂාව සොයා ගනු ඇත.

එය ඉහළ කාර්ය සාධන යෙදුම් නිර්මාණය කිරීමට භාවිතා කරන හරස් වේදිකා භාෂාවකි. C++ භාෂාව ස්ථාපිත කරන ලදීC භාෂාව නිර්මාණය කිරීමේ වගකීම ද දරන Bjarne Stroustrup විසිනි. එහි නම මෙන් පැහැදිලිව පෙනෙන පරිදි, මෙම භාෂාව C භාෂාවේ දිගුවකි.

එය මඟින් ක්‍රමලේඛකයින්ට පද්ධති සම්පත් සහ මතකය පිළිබඳ ඉහළ පාලනයක් ලබා ගැනීමට ඉඩ සලසයි. එය දැනටමත් යාවත්කාලීන කර ඇති බව ඔබ සිතනවා විය හැක. කෙසේ වෙතත්, භාෂාව 2011, 2014, සහ 2017 දී තුන් වරක් යාවත්කාලීන කර ඇත. එය C++11, C++14, සිට C++17 දක්වා ගියේය.

අද දක්වා, C++ භාෂාව එහි සැලකිය යුතු අතේ ගෙන යා හැකි හැකියාව නිසා ඉතා හොඳින් අගය කරනු ලබන අතර, විවිධ මෙහෙයුම් පද්ධති හෝ වේදිකා මත කාර්යක්ෂමව ක්‍රියාත්මක කළ හැකි වැඩසටහන් නිර්මාණය කිරීමට නිර්මාණකරුවන්ට ඉඩ සලසයි.

බොහෝ දෙනෙක් C++ භාවිතා කරන්නේ ඇයි?

මෙම භාෂාව ප්‍රචලිත වන්නේ එය වස්තු-නැඹුරු ක්‍රමලේඛන භාෂාවක් වන නිසා එය වැඩසටහන් සඳහා පැහැදිලි ව්‍යුහයක් සපයන අතර කේතය නැවත භාවිතා කිරීමට ඉඩ දීමෙන් සංවර්ධන වියදම් අඩු කිරීමට උපකාරී වේ.

එහි ඉහළ කාර්ය සාධනය හේතුවෙන්, මෙම භාෂාව ක්‍රීඩා, ඩෙස්ක්ටොප් යෙදුම්, බ්‍රව්සර් සහ මෙහෙයුම් පද්ධති සංවර්ධනය කිරීමට භාවිතා කරයි. මෙම භාෂාවේ තවත් විශේෂාංගයක් වන්නේ එය අතේ ගෙන යා හැකි සහ බහු වේදිකා වලට අනුවර්තනය විය හැකි යෙදුම් නිර්මාණය කිරීමට කෙනෙකුට ඉඩ දීමයි.

බලන්න: ඉහළ VS අඩු මරණ අනුපාතය (වෙනස්කම් පැහැදිලි කර ඇත) - සියලු වෙනස්කම්

එය ඉගෙන ගැනීමට වඩාත්ම අභියෝගාත්මක භාෂාවක් ලෙස දන්නා නමුත්, එහි වාසි ඇත. එහි බහු සුසමාදර්ශ භාෂාව සහ එහි ක්‍රියාකාරිත්වය වඩා දියුණු වාක්‍ය ඛණ්ඩය නිසා එය අනෙක් අයට වඩා තේරුම් ගැනීම අභියෝගාත්මක ය.

ඔබට C++ භාෂාව ඉගෙන ගැනීමට හැකි නම්, එය ඉගෙනීමට වඩා වැඩි වේJava සහ Python වැනි මෙයට පසුව අනෙකුත් ක්‍රමලේඛන භාෂා.

කෙටියෙන් කිවහොත්, C++ යනු සාමාන්‍ය අරමුණක් වන අතර, මධ්‍යම මට්ටමේ ක්‍රමලේඛන භාෂාවක් වන අතර එය “C style” එකකින් කේත කිරීමට හැකි වේ. සමහර අවස්ථාවලදී, ඔබ C++ දෙමුහුන් භාෂාවකට උදාහරණයක් කරමින් ආකෘතියෙන් කේතනය කළ හැක.

C සහ C++ භාෂාවලට Null අක්ෂරයක්, Null pointer එකක් සහ Null ප්‍රකාශයක් ඇත (අර්ධ කොමාවකින් (;) නියෝජනය වේ).

Null යනු කුමක්ද? C++?

ශුන්‍ය අගය ශුන්‍යයේ අගය දරන බිල්ට්-ඉන් නියතයක් ලෙස සැලකේ. එය පරිගණක ක්‍රමලේඛනයේ නියතයක් සහ දර්ශකයකි.

දත්ත සමුදායක් තුළ ශුන්‍ය යනු අගයකි. Null අගයෙන් පෙන්නුම් කරන්නේ අගයක් නොමැති බවයි. Null අගයක් ලෙස භාවිතා කරන විට, එය මතක ස්ථානයක් නොවේ.

එපමනක් නොව, Null අක්ෂරයක් නොමැතිව, තන්තුවක් නිසි පරිදි අවසන් කිරීමට නොහැකි වනු ඇත, බොහෝ ගැටළු වලට මග පාදයි. Null අක්ෂරයට විවිධ ක්‍රමලේඛන භාෂා හරහා විවිධ භාවිතයන් ඇත.

ප්‍රශ්නය වන්නේ ඔබ C++ හි Null ලියන්නේ කෙසේද යන්නයි. හොඳයි, Null නියතයකට පූර්ණ සංඛ්‍යා වර්ගයක් තිබේ නම්, එය යම් ආකාරයක අගයකට පරිවර්තනය කළ හැක.

උදාහරණයක් ලෙස, දත්ත සමුදායේ දත්ත අගයක් නොමැති බව දැක්වීමට ව්‍යුහගත විමසුම් භාෂාවේ (SQL) මෙම අක්ෂරය, “Null” භාවිතා වේ. සම්බන්ධතා දත්ත සමුදායක් යනු නිශ්චිත තීරුවක අගයක් නොදන්නා විට හෝ නැති වූ විටය.

තවද, C# හි,ක්‍රමලේඛන භාෂාවක්, Null යන්නෙන් අදහස් කරන්නේ "කිසිදු වස්තුවක්" යන්නයි. මෙම භාෂාවෙන්, එය නියත ශුන්‍යයට සමාන නොවේ.

කෙසේ වෙතත් C++ භාෂාවෙන්, Null අක්ෂරය යනු කිසිදු වලංගු දත්ත වස්තුවක් වෙත යොමු නොකරන අනන්‍ය රක්ෂිත ලක්ෂ්‍ය අගයකි. එසේම, C++ භාෂාවෙන්, Null ශ්‍රිතයන් යනු පොයින්ටර් විචල්‍යයන් සඳහා අගය පැවරීමේ ක්‍රමයක් පමණි.

Null සහ Zero අතර වෙනස

Nul අගය Zero දරන බැවින්, Null සහ Zero අතර වෙනස හඳුනා ගන්නේ කෙසේද යන්න පිළිබඳව මිනිසුන් බොහෝ විට ව්‍යාකූල වේ.

C++ හි Null යනු Null pointer නියතයක් නිර්වචනය කරන macro එකක් වන අතර එය සාමාන්‍යයෙන් අගය ශුන්‍ය වේ. කෙසේ වෙතත්, විචල්‍යයට කිසිදු බරක් නොමැති බව නියෝජනය කරමින් Null ඔබට සැලකිය යුතු අගයක් ලබා දෙයි.

සහ, Zero යනු අගයක් වන අතර, එය ප්‍රවාහ අනුක්‍රමය පුරා පවතිනු ඇත්තේ එලෙසය. වෙනත් වචන වලින් කිවහොත්, Zero යනු සංඛ්‍යා අගයම වන අතර Null යන්නෙහි තේරුම හිස්ය.

ඔබට එය ශීතකරණයක් සඳහා වෙන් කර ඇති නිශ්චිත ඉඩක් ලෙස සිතිය හැක. ශීතකරණය තිබේ නම්, නමුත් එහි කිසිවක් අඩංගු නොවේ නම්, අගය ශුන්‍ය වේ. අනෙක් අතට, ශීතකරණය සඳහා වෙන් කර ඇති ඉඩෙහි කිසිසේත් ශීතකරණයක් නොමැති නම්, එහි අගය Null වේ.

C++ හි Nullptr යන්නෙන් අදහස් කරන්නේ කුමක්ද?

“Nullptr” මූල පදය Null pointer අගයක් නියෝජනය කරයි. වස්තු හසුරුවක්, අභ්‍යන්තර දර්ශකයක් හෝ ස්වදේශීය දර්ශක වර්ගයක් වස්තුවක් වෙත යොමු නොවන බව දැක්වීමට ඔබ Null pointer අගයක් භාවිතා කරනු ඇත.

පින්තූරවලට පමණක් මතක ස්ථාන රඳවා ගත හැකි අතර අගයන්ට නොහැක.

පළමුව, අපි දර්ශකයක් යනු කුමක්දැයි වටහා ගත යුතුය. එය මතක පිහිටීමක් ඇති විචල්‍යයකි.

බලන්න: 60-වොට් එදිරිව වොට් 100 විදුලි බුබුල (ජීවිතය ආලෝකමත් කරමු) - සියලු වෙනස්කම්

ශුන්‍ය දර්ශකයක් යනු චේතනාන්විතව කිසිවක් වෙත සංඥා කරන දර්ශකයකි. ඔබට දර්ශකයක් වෙත පැවරිය හැකි ලිපිනයක් නොමැති නම්, ඔබට Null භාවිතා කළ හැක. Null අගය මඟින් පොයින්ටර් ඇති යෙදුම්වල මතක කාන්දුවීම් සහ බිඳ වැටීම් වළක්වයි.

එසේම, Nullptr සඳහා පරීක්ෂා කිරීමට, C++ හි Pointer එකක් Null දැයි පරීක්ෂා කිරීමට ඔබට කොන්දේසියක් ලෙස pointer අගයක් භාවිතා කළ හැක. තාර්කික ප්‍රකාශනවල භාවිතා කරන විට, Null pointers අසත්‍ය ලෙස ඇගයීමට ලක් කෙරේ.

එබැවින්, එය ශුන්‍ය දැයි පරීක්‍ෂා කිරීමට යමෙකුට දී ඇති දර්ශකයක් if ප්‍රකාශ තත්ත්වය තුළ තැබිය හැකිය. කෙටියෙන් කිවහොත්, Nullptr යනු Zero ලිපිනයක් ලෙස නියෝජනය කරන pointer-type keyword එකකි.

පොදු ප්‍රශ්නය වන්නේ දැනටමත් Null අක්ෂරයක් ඇති විට Nullptr අවශ්‍ය වන්නේ මන්ද යන්නයි. එයට හේතුව, C++11 හි, Nullptr යනු Null pointer නියතයක් වන අතර, එය වර්ග ආරක්ෂාව වැඩි දියුණු කරන නිසා එය අවශ්‍ය වේ.

Null සහ Nullptr එක සමානද?

නැහැ. ඔවුන් නොවේ. පළමුව ඔවුන්ගේ වෙනස්කම් දැන ගැනීමට පහත වගුව පරීක්ෂා කරන්න.

Nullptr Null
බිංදුව නියෝජනය කරන මූල පදය ශුන්‍යයේ අගය
ශුන්‍ය ලිපිනයක් ලෙස නියෝජනය කරයි අගය නියෝජනය කරයි integer
නව සහ යෝජිත ශ්‍රිතය පැරණි සහඅවලංගු ශ්‍රිතය
සත්‍ය පොයින්ටර් වර්ගය නිඛිල සඳහා අන්වර්ථයක් ලෙස ක්‍රියාත්මක කර ඇත

ස්ථාවර ශුන්‍යය

0>ඔබ ව්‍යාකූල නොවන පරිදි මූලපද සටහන් කරන්න.

ශුන්‍ය යනු “ප්‍රකාශිත නියතයක්” ලෙස සලකනු ලබන අතර එය සැබවින්ම පූර්ණ සංඛ්‍යාවක් වන අතර ව්‍යංග පරිවර්තනයක් හේතුවෙන් දර්ශකයකට පැවරිය හැක.

Nullptr යනු ස්වයං නිර්වචනය කළ ආකාරයේ අගයක් නියෝජනය කරන මූල පදයක් වන අතර, එය දර්ශකයක් බවට පරිවර්තනය කළ හැකි නමුත් පූර්ණ සංඛ්‍යා බවට පරිවර්තනය කළ නොහැක. Nullptr සාමාන්‍යයෙන් Null pointer එකක් වන අතර එය සැමවිටම එකක් වනු ඇත. ඔබ එය පූර්ණ සංඛ්‍යාවකට පැවරීමට උත්සාහ කරන්නේ නම්, එය දෝෂ ඇති කරයි.

ඔබට තවමත් එය නොලැබුනේ නම්, මෙම වීඩියෝව නරඹන්න.

ඔබ ප්‍රවාහකය සමඟ Null හෝ nullptr—code භාවිතා කළ යුත්තේ කුමක්ද සහ කවදාද යන්න මෙම වීඩියෝව හොඳින් පැහැදිලි කරයි.

ඔබට Null වෙනුවට Nullptr භාවිතා කළ හැකිද?

ඔව් . ඒවා සමාන නොවන අතර, Null වෙනුවට Nullptr භාවිතා කිරීමට ඔබට ක්‍රමයක් තිබේ.

අමතරව, Nullptr යනු C++ හි නව මූල පදයක් වන අතර එය ප්‍රතිස්ථාපනය කළ හැකිය. ශුන්‍ය. Nullptr හිස් දර්ශකයක් නියෝජනය කරන ආරක්ෂිත ආකාරයේ පොයින්ටර් අගයක් ලබා දෙයි.

සමහරු Null එය නුසුදුසු නිසා භාවිතයෙන් වළකින අතර, වර්තමානයේ බොහෝ කේතකයින් Null වෙනුවට Nullptr භාවිතා කිරීමේ යෝජනාව අනුගමනය කරන නිසා එය අඩුවෙන් සිදු වේ.

ඊට අමතරව, යොමුව භාවිතා කිරීමට පෙර පොයින්ටරයක් ​​හෝ හැසිරවීමේ යොමුවක් Null ද යන්න පරීක්ෂා කිරීමට ඔබට Nullptr මූල පදය භාවිතා කළ හැක.

ඔබට Nullptr එකක් ප්‍රතික්ෂේප කළ හැකිද?

ඔබට nullptr අගය කළ හැක. ඔබ එසේ කරන්නේ නම්, ඔබට දර්ශකය පෙන්වා දෙන ලිපිනයේ ඇති අගයට ප්‍රවේශ විය හැක.

පරිගණක භාෂාවල, දර්ශකයක් මඟින් පෙන්වා ඇති මතක ස්ථානයේ අඩංගු දත්ත වෙත ප්‍රවේශ වීමට හෝ හැසිරවීමට dereferencing භාවිතා කරයි.

කෙසේ වෙතත්, ඔබට මෙය C භාෂාවෙන් කළ නොහැක . ශුන්‍ය දර්ශකයක් ගබඩා කර ඇති දත්ත වෙත ප්‍රවේශ වන අර්ථාන්විත වස්තුවක් වෙත යොමු නොකරයි. Null pointer එකක් සාමාන්‍යයෙන් ධාවන කාල දෝෂයකට හෝ ක්ෂණික ක්‍රමලේඛ බිඳ වැටීමකට මග පාදයි.

පරිගණක ක්‍රමලේඛනයේ දී, දර්ශක විචල්‍යයක් මත ක්‍රියාත්මක වන්නේ dereference ක්‍රියාකරු වේ. එය විචල්‍යයේ අගය මගින් පෙන්වා දුන් මතකයේ ස්ථාන අගය ලබා දෙයි. C++ ක්‍රමලේඛන භාෂාවේදී, ක්‍රියාත්මක වන deference තරු ලකුණකින් (*) සංකේතවත් කරයි.

අවසාන සිතුවිලි

කෙනෙකුට ශුන්‍ය දර්ශකයක් ලබා දෙන මැක්‍රෝ එකක් ලෙස ශුන්‍යයක් අර්ථ දැක්විය හැක, එනම් එම විචල්‍යයට ලිපිනයක් නොමැති බවයි. Null යනු C භාෂාවේ පැරණි මැක්‍රෝ එකකි.

මේ අතර, Nullptr යනු C++11 හි හඳුන්වා දුන් නව අනුවාදයක් වන අතර එය Null සඳහා ආදේශකයක් ලෙස අදහස් කෙරේ.

එබැවින්, අද, ඔබ අතීතයේ හෝ මේ ලියන විටත් Null වෙනුවට භාවිත කළ ස්ථානවල Nullptr භාවිතා කිරීම ආරම්භ කිරීම නිර්දේශ කෙරේ.

    මෙම ලිපියේ කෙටි අනුවාදය බැලීමට මෙතැන ක්ලික් කරන්න.

    Mary Davis

    මේරි ඩේවිස් යනු විවිධ මාතෘකා පිළිබඳ සංසන්දනාත්මක විශ්ලේෂණ සඳහා විශේෂීකරණය වූ ලේඛකයෙක්, අන්තර්ගත නිර්මාපකයෙක් සහ උද්යෝගිමත් පර්යේෂකයෙකි. පුවත්පත් කලාව පිළිබඳ උපාධියක් සහ ක්ෂේත්‍රයේ වසර පහකට වැඩි පළපුරුද්දක් ඇති මේරිට අපක්ෂපාතී සහ සරල තොරතුරු තම පාඨකයන්ට ලබා දීමට ආශාවක් ඇත. ඇයගේ ලිවීමට ඇති ඇල්ම ඇය තරුණ වියේදී ආරම්භ වූ අතර ඇයගේ සාර්ථක ලේඛන දිවිය පිටුපස ගාමක බලවේගයක් විය. පහසුවෙන් තේරුම් ගත හැකි සහ සිත් ඇදගන්නා ආකෘතියකින් පර්යේෂණ කිරීමට සහ සොයාගැනීම් ඉදිරිපත් කිරීමට මේරිට ඇති හැකියාව ලොව පුරා පාඨකයන්ගේ ආදරය දිනා ඇත. ඇය ලියන්නේ නැති විට, මේරි සංචාරය කිරීමට, කියවීමට සහ පවුලේ අය සහ මිතුරන් සමඟ කාලය ගත කිරීමට ප්‍රිය කරයි.