У чым розніца паміж Null і Nullptr у C++? (Падрабязна) – Усе адрозненні

 У чым розніца паміж Null і Nullptr у C++? (Падрабязна) – Усе адрозненні

Mary Davis

«Nullptr» лічыцца ключавым словам, якое адлюстроўвае нуль як адрас, тады як «Null» - гэта значэнне Нуль як цэлае лік.

Калі вы праграміст, вы, магчыма, ведаеце, наколькі важна разумець камп'ютарныя мовы для лепшага кодавання. Але часам гэта можа быць крыху блытаным, і вы можаце пераблытаць дзве рэчы.

Аналагічны выпадак з Null і Nullptr у мове C++. Дазвольце мне расказаць вам, што азначаюць гэтыя два тэрміны і іх функцыі, каб дапамагчы вам зразумець іх адрозненне і іх выкарыстанне.

Давайце паглыбімся ў іх!

Што такое кампутарныя мовы?

Камп'ютарныя мовы можна вызначыць як код або сінтаксіс, якія выкарыстоўваюцца для напісання праграм і спецыяльных прыкладанняў.

Глядзі_таксама: Я таксама кахаю цябе супраць Я таксама кахаю цябе (параўнанне) – усе адрозненні

Па сутнасці, гэта фармальная мова, якая выкарыстоўваецца для сувязі з камп'ютарамі. Такім жа чынам розныя краіны маюць розныя мовы, якія дапамагаюць людзям дзяліцца думкамі, гэтак жа і камп'ютары.

Яны вынайдзены, каб разумець праграмаванне камп'ютара і працаваць на ім. Увогуле, кампутарную мову можна падзяліць на тры асноўныя катэгорыі:

  • Мова зборкі

    Гэта лічыцца мовай нізкага ўзроўню, якая выкарыстоўваецца для мікрапрацэсараў і мноства іншых праграмуемых прылад. Гэта мова другога пакалення. Ён вядомы напісаннем аперацыйнай сістэмы і напісаннем розных настольных праграм.

  • Машынная мова

    Гэта родная мова з'яўляецца мовай першага пакалення.Гэта называецца машынным кодам або нават аб'ектным кодам, які мае набор двайковых лічбаў 0 і 1. Гэтыя лічбы ўспрымаюцца і чытаюцца кампутарнай сістэмай, якая хутка іх інтэрпрэтуе.

  • Мова высокага ўзроўню

    Гэта было ўстаноўлена з-за праблем з пераноснасцю ў старых мовах. Код не мог перадаць, гэта азначала, што код быў напісаны на адной машыне. Гэтая мова лёгкая для разумення, а таксама вельмі зручная для карыстання.

Частка мовы, якую разумее камп'ютар, называецца "двайковай". З іншага боку, пераклад мовы праграмавання ў двайковы код вядомы як «кампіляцыя».

Карацей кажучы, мовы праграмавання дазваляюць людзям даваць інструкцыі кампутарам, каб тыя маглі іх чытаць і выконваць. Кожная камп'ютэрная мова мае свае адметныя асаблівасці, ад мовы C да python.

Гэтыя мовы палягчаюць і паскараюць камп'ютарам больш эфектыўную апрацоўку вялікіх і складаных даных. Сёння ў свеце існуе некалькі моў праграмавання. Некаторыя з іх ўключаюць Java, Python, HTML, C, C++ і SQL.

Што такое мова C++?

Мова C++ з'яўляецца адной з самых папулярных моў праграмавання ў свеце. Вы знойдзеце гэтую мову ў аперацыйных сістэмах, графічных карыстальніцкіх інтэрфейсах і ўбудаваных сістэмах сучаснага свету.

Гэта кросплатформенная мова, якая выкарыстоўваецца для стварэння высокапрадукцыйных праграм. Была створана мова C++Б'ярн Страуструп, які таксама адказвае за стварэнне мовы Сі. Як відавочна, як і назва, гэтая мова з'яўляецца пашырэннем мовы C.

Гэта дазваляе праграмістам мець высокі кантроль над сістэмнымі рэсурсамі і памяццю. Вы можаце падумаць, што ён ужо абноўлены. Аднак мова абнаўлялася тройчы ў 2011, 2014 і 2017 гадах. Яна перайшла ад C++11, C++14 да C++17.

Да сённяшняга дня мова C++ вельмі высока цэніцца дзякуючы сваёй значнай мабільнасці, што дазваляе стваральнікам распрацоўваць праграмы, якія могуць эфектыўна працаваць на розных аперацыйных сістэмах і платформах.

Чаму многія выкарыстоўваюць C++?

Гэтая мова з'яўляецца распаўсюджанай таму што гэта аб'ектна-арыентаваная мова праграмавання, якая забяспечвае ясную структуру праграм і дапамагае знізіць выдаткі на распрацоўку, дазваляючы паўторна выкарыстоўваць код.

Дзякуючы сваёй высокай прадукцыйнасці, гэтая мова выкарыстоўваецца для распрацоўкі гульняў, настольных праграм, браўзераў і аперацыйных сістэм. Яшчэ адной асаблівасцю гэтай мовы з'яўляецца тое, што яна партатыўная і дазваляе ствараць прыкладанні, якія можна адаптаваць да некалькіх платформаў.

Хоць вядома, што гэта адна з самых складаных моў для вывучэння, у яе ёсць свае перавагі. Яго больш складана зразумець, чым іншыя, з-за яго шматпарадыгмальнай мовы і больш пашыранага сінтаксісу функцый.

Калі вы можаце вывучыць мову C++, вывучыць яе стане нашмат цяжэйіншыя мовы праграмавання пасля гэтай, такія як Java і Python.

Карацей кажучы, C++ - гэта мова праграмавання агульнага прызначэння сярэдняга ўзроўню, якая дазваляе кадзіраваць яе ў «стылі C». У некаторых выпадках вы можа выконваць кадзіраванне ў любым фармаце, што робіць C++ прыкладам гібрыднай мовы .

Мовы C і C++ маюць сімвал Null, указальнік Null і аператар Null (прадстаўлены кропкай з коскай (;)).

Што такое Null у C++?

Null лічыцца ўбудаванай канстантай, якая мае значэнне нуль. Гэта адначасова канстанта і паказальнік у камп'ютарным праграмаванні.

У базе даных нуль з'яўляецца значэннем. Значэнне Null паказвае, што значэння не існуе. Калі ў якасці значэння выкарыстоўваецца Null, гэта не месца ў памяці.

Больш за тое, без нулявога сімвала радок не зможа закончыцца адпаведным чынам, што прывядзе да шматлікіх праблем. Нулявы сімвал мае шмат розных ужыванняў у розных мовах праграмавання.

Пытанне ў тым, як бы вы напісалі Null на C++. Ну, калі канстанта Null мае цэлы тып, яе можна пераўтварыць у значэнне свайго роду.

Напрыклад, гэты сімвал «нуль» выкарыстоўваецца ў мове структураваных запытаў (SQL) як пэўны маркер, які паказвае, што значэнне даных не існуе ў базе даных. Рэляцыйная база дадзеных - гэта калі значэнне ў пэўным слупку невядомае або адсутнічае.

Больш таго, у C#,мова праграмавання, Null азначае «няма аб'екта». У гэтай мове гэта не тое ж самае, што канстанта нуль.

Аднак у мове C++ сімвал Null з'яўляецца унікальным зарэзерваваным значэннем паказальніка, якое не паказвае ні на адзін сапраўдны аб'ект даных. Акрамя таго, у мове C++ функцыі Null - гэта проста спосаб прысвоіць значэнне зменным-указальнікам.

Адрозненне паміж Null і Zero

Паколькі Null мае значэнне Zero, людзі часта блытаюцца ў тым, як можна адрозніць Null ад Zero.

Null у C++ - гэта проста макрас, які вызначае канстанту Null-указальніка і звычайна мае нулявое значэнне. Аднак Null дае вам значнае значэнне, якое паказвае, што зменная не мае ніякай вагі.

У той час як нуль сам па сабе з'яўляецца значэннем, і такім ён будзе заставацца на працягу ўсёй паслядоўнасці патоку. Іншымі словамі, нуль - гэта само значэнне ліку, а нуль азначае пустое.

Вы можаце разглядаць гэта як пэўную прастору, прызначаную для халадзільніка . Калі халадзільнік ёсць, але ў ім нічога няма, то значэнне роўна нулю. З іншага боку, калі месца, адведзенае для халадзільніка, зусім не мае халадзільніка, значэнне роўна Null.

Што азначае Nullptr у C++?

Ключавое слова «Nullptr» уяўляе сабой значэнне Нулявога паказальніка. Нулявое значэнне паказальніка будзе выкарыстоўвацца, каб паказаць, што ручка аб'екта, унутраны паказальнік або ўласны тып паказальніка не паказваюць на аб'ект.

Толькі ўказальнікі могуць утрымліваць месцы памяці, а значэнні — не.

Па-першае, нам трэба зразумець, што такое ўказальнік. Гэта зменная, якая змяшчае месца ў памяці.

Нулявы паказальнік - гэта паказальнік, які наўмысна нічога не сігналізуе. Калі ў вас няма адраса, які вы маглі б прызначыць паказальніку, вы можаце выкарыстоўваць Null. Значэнне Null дазваляе пазбегнуць уцечак памяці і збояў у праграмах, якія маюць паказальнікі.

Больш за тое, каб праверыць Nullptr, вы можаце выкарыстоўваць значэнне паказальніка ў якасці ўмовы для праверкі, ці з'яўляецца паказальнік Null у C++. Пры выкарыстанні ў лагічных выразах нулявыя паказальнікі ацэньваюцца як ілжывыя.

Глядзі_таксама: Пітэр Паркер супраць Пітэра Б. Паркера: Іх адрозненні – усе адрозненні

Такім чынам, можна размясціць дадзены паказальнік ва ўмове аператара if, каб праверыць, ці з'яўляецца ён Null. Карацей кажучы, Nullptr - гэта ключавое слова тыпу ўказальніка, якое прадстаўляе нуль як адрас.

Агульны пытанне заключаецца ў тым, навошта патрэбны Nullptr, калі ўжо ёсць сімвал Null. Гэта адбываецца таму, што ў C++11 Nullptr з'яўляецца канстантай указальніка Null, і гэта неабходна, таму што гэта паляпшае бяспеку тыпу.

Null і Nullptr аднолькавыя?

Не. Яны не з'яўляюцца. Праверце гэтую табліцу ніжэй, каб спачатку даведацца пра іх адрозненні.

Nullptr Null
Ключавое слова, якое прадстаўляе нуль Значэнне нуля
Уяўляе нуль як адрас Уяўляе значэнне як цэлы лік
Навейшая і прапанаваная функцыя Старая ісастарэлая функцыя
Тып сапраўднага паказальніка Рэалізавана як псеўданім для цэлага ліку

канстанта нуль

Звярніце ўвагу на ключавыя словы, каб не заблытацца.

Null лічыцца «канстантай маніфеста», якая насамрэч з'яўляецца цэлым лікам і можа быць прысвоена паказальніку з-за няяўнага пераўтварэння.

У той час як Nullptr - гэта ключавое слова, якое прадстаўляе значэнне самавызначанага тыпу, і яно можа пераўтварацца ў паказальнік, але не ў цэлыя лікі. Nullptr звычайна з'яўляецца Нулявым паказальнікам і заўсёды ім будзе. Калі вы паспрабуеце прысвоіць яго цэламу ліку, гэта прывядзе да памылак.

Калі вы ўсё яшчэ не разумееце, паглядзіце гэта відэа.

Гэта відэа падрабязна тлумачыць, што і калі вы павінны выкарыстоўваць Null або nullptr—код разам з стрымерам.

Ці можаце вы выкарыстоўваць Nullptr замест Null?

Так . Хоць яны не аднолькавыя, ёсць спосаб выкарыстоўваць Nullptr замест Null.

Акрамя таго, Nullptr - гэта новае ключавое слова ў C++, якое можа замяніць Нуль. Nullptr дае значэнне паказальніка бяспечнага тыпу, якое прадстаўляе пусты паказальнік.

Хоць некаторыя пазбягаюць выкарыстання Null, таму што ён непрыдатны , у наш час гэта менш распаўсюджана, таму што многія кодэры прытрымліваюцца прапановы выкарыстоўваць Nullptr замест Null.

Акрамя таго, вы можаце выкарыстаць ключавое слова Nullptr, каб праверыць, ці з'яўляецца спасылка на паказальнік або дэскрыптар Null перад выкарыстаннем спасылкі.

Ці можаце вы разыменаваць Nullptr?

Вы можаце паважаць nullptr. Калі вы гэта зробіце, вы зможаце атрымаць доступ да значэння па адрасе, на які паказвае паказальнік.

У камп'ютэрных мовах разыменаванне выкарыстоўваецца для доступу да даных або маніпулявання імі, якія змяшчаюцца ў месцы памяці, на якое паказвае паказальнік.

Аднак вы не можаце зрабіць гэта на мове C . Нулявы паказальнік не паказвае на значны аб'ект, спробу разыменавання, які атрымлівае доступ да захаваных даных. Нулявы паказальнік звычайна прыводзіць да памылкі падчас выканання або неадкладнага збою праграмы.

У камп'ютэрным праграмаванні аператар разыменавання - гэта тое, што працуе са зменнай-указальнікам. Ён вяртае значэнне месцазнаходжання ў памяці, на якое паказвае значэнне зменнай . У мове праграмавання C++ павага, якая дзейнічае, пазначаецца зорачкай (*).

Заключныя думкі

Можна вызначыць Null як макрас, які дае нулявы паказальнік, што азначае, што для гэтай зменнай няма адрасу. Null - гэта стары макрас на мове C, які перайшоў у C++.

Між тым, Nullptr - гэта новая версія, прадстаўленая ў C++11, якая прызначана ў якасці замены Null.

Такім чынам, сёння рэкамендуецца пачаць выкарыстоўваць Nullptr у тых месцах, дзе вы выкарыстоўвалі Null замест яго ў мінулым ці нават на момант напісання гэтага артыкула.

    Націсніце тут, каб праглядзець скарочаную версію гэтага артыкула.

    Mary Davis

    Мэры Дэвіс - пісьменніца, стваральнік кантэнту і заўзяты даследчык, якая спецыялізуецца на параўнальным аналізе па розных тэмах. Са ступенню журналіста і больш чым пяцігадовым вопытам работы ў гэтай галіне, Мэры імкнецца даносіць аб'ектыўную і ясную інфармацыю сваім чытачам. Яе любоў да пісьменства пачалася ў маладосці і стала рухаючай сілай яе паспяховай пісьменніцкай кар'еры. Здольнасць Мэры даследаваць і прадстаўляць вынікі ў зручным для разумення і прывабным фармаце палюбіла яе чытачоў ва ўсім свеце. Калі яна не піша, Мэры любіць падарожнічаць, чытаць і праводзіць час з сям'ёй і сябрамі.