តើអ្វីជាភាពខុសគ្នារវាង Null និង Nullptr នៅក្នុង C++? (លម្អិត) - ភាពខុសគ្នាទាំងអស់។
តារាងមាតិកា
“Nullptr” ត្រូវបានចាត់ទុកថាជាពាក្យគន្លឹះដែលពណ៌នាសូន្យជាអាសយដ្ឋាន ចំណែក “Null” គឺជាតម្លៃសូន្យជាចំនួនគត់។
ប្រសិនបើអ្នកជាអ្នកសរសេរកម្មវិធី អ្នកប្រហែលជាដឹងថាតើវាមានសារៈសំខាន់យ៉ាងណាក្នុងការយល់ភាសាកុំព្យូទ័រដើម្បីសរសេរកូដកាន់តែប្រសើរ។ ប៉ុន្តែពេលខ្លះ វាអាចមានការយល់ច្រលំបន្តិច ហើយអ្នកអាចលាយឡំគ្នារវាងរឿងពីរ។
ស្រដៀងគ្នាដែរគឺករណីសម្រាប់ Null និង Nullptr ក្នុងភាសា C++។ ខ្ញុំសូមប្រាប់អ្នកពីអត្ថន័យនៃពាក្យទាំងពីរនេះ និងមុខងាររបស់វា ដើម្បីជួយអ្នកឱ្យយល់ពីភាពខុសគ្នា និងការប្រើប្រាស់របស់វា។
តោះចូលមើលទាំងអស់គ្នា!
តើភាសាកុំព្យូទ័រជាអ្វី?
ភាសាកុំព្យូទ័រអាចត្រូវបានកំណត់ថាជាកូដ ឬវាក្យសម្ព័ន្ធដែលប្រើសម្រាប់សរសេរកម្មវិធី និងកម្មវិធីជាក់លាក់។
ជាទូទៅ វាជាភាសាផ្លូវការដែលប្រើសម្រាប់ទំនាក់ទំនងជាមួយកុំព្យូទ័រ។ ដូចគ្នាដែរ ប្រទេសផ្សេងៗគ្នាមានភាសាផ្សេងៗគ្នាដែលជួយមនុស្សចែករំលែកគំនិត ដូច្នេះកុំព្យួទ័រ។
ទាំងនេះត្រូវបានបង្កើតឡើងដើម្បីយល់ពីការសរសេរកម្មវិធីរបស់កុំព្យូទ័រ និងធ្វើការលើពួកគេ។ ជាទូទៅ ភាសាកុំព្យូទ័រអាចត្រូវបានចាត់ថ្នាក់ជា បីប្រភេទសំខាន់ៗ៖
- ភាសាជួបប្រជុំ
វាត្រូវបានចាត់ទុកថាជាភាសាកម្រិតទាបដែលប្រើសម្រាប់មីក្រូដំណើរការ និងឧបករណ៍ដែលអាចសរសេរកម្មវិធីបានច្រើន។ វាជាភាសាជំនាន់ទីពីរ។ វាត្រូវបានគេស្គាល់សម្រាប់ការសរសេរប្រព័ន្ធប្រតិបត្តិការ និងការសរសេរកម្មវិធីកុំព្យូទ័រលើតុផ្សេងៗគ្នា។
- ភាសាម៉ាស៊ីន
ភាសាកំណើតនេះគឺជាភាសាជំនាន់ទីមួយ។វាត្រូវបានគេហៅថាកូដម៉ាស៊ីន ឬសូម្បីតែកូដវត្ថុដែលមានសំណុំនៃលេខគោលពីរ 0 និង 1 ។ លេខទាំងនេះត្រូវបានយល់ និងអានដោយប្រព័ន្ធកុំព្យូទ័រដែលបកប្រែពួកវាយ៉ាងរហ័ស។
សូមមើលផងដែរ: ចុងសប្តាហ៍មុននេះទល់នឹងចុងសប្តាហ៍មុន៖ តើមានភាពខុសគ្នាទេ? (ពន្យល់) - ភាពខុសគ្នាទាំងអស់។ - ភាសាកម្រិតខ្ពស់
វាត្រូវបានបង្កើតឡើងដោយសារតែបញ្ហាចល័តនៅក្នុងភាសាចាស់ជាងនេះ។ លេខកូដមិនអាចផ្ទេរកូដដែលមានន័យនេះត្រូវបានសរសេរនៅលើម៉ាស៊ីនតែមួយទេ។ ភាសានេះងាយស្រួលយល់ ហើយក៏ងាយស្រួលប្រើផងដែរ។
ផ្នែកនៃភាសាដែលកុំព្យូទ័រយល់ត្រូវបានគេស្គាល់ថាជា "ប្រព័ន្ធគោលពីរ"។ ម្យ៉ាងវិញទៀត ការបកប្រែភាសាសរសេរកម្មវិធីទៅជាប្រព័ន្ធគោលពីរត្រូវបានគេហៅថា "ការចងក្រង" ។
និយាយឱ្យខ្លី ភាសាសរសេរកម្មវិធីអនុញ្ញាតឱ្យមនុស្សផ្តល់ការណែនាំដល់កុំព្យូទ័រ ដូច្នេះពួកគេអាចអាន និងប្រតិបត្តិពួកវាបាន។ ភាសាកុំព្យូទ័រនីមួយៗមានលក្ខណៈពិសេសផ្សេងគ្នារបស់វា ចាប់ពីភាសា C ដល់ភាសា Python។
ភាសាទាំងនេះធ្វើឱ្យវាកាន់តែងាយស្រួល និងរហ័សសម្រាប់កុំព្យូទ័រក្នុងការដំណើរការទិន្នន័យធំ និងស្មុគស្មាញកាន់តែមានប្រសិទ្ធភាព។ មានភាសាសរសេរកម្មវិធីជាច្រើននៅលើពិភពលោកសព្វថ្ងៃនេះ។ មួយចំនួនក្នុងចំណោមនោះរួមមាន Java, Python, HTML, C, C++ និង SQL ។
តើភាសា C++ ជាអ្វី?
ភាសា C++ គឺជាភាសាសរសេរកម្មវិធីដ៏ពេញនិយមបំផុតមួយរបស់ពិភពលោក។ អ្នកនឹងរកឃើញភាសានេះនៅក្នុងប្រព័ន្ធប្រតិបត្តិការ ចំណុចប្រទាក់អ្នកប្រើក្រាហ្វិក និងប្រព័ន្ធដែលបានបង្កប់នៅក្នុងពិភពលោកបច្ចុប្បន្ន។
វាជាភាសាឆ្លងវេទិកាដែលប្រើដើម្បីបង្កើតកម្មវិធីដែលមានប្រសិទ្ធភាពខ្ពស់។ ភាសា C ++ ត្រូវបានបង្កើតឡើងដោយ Bjarne Stroustrup ដែលទទួលខុសត្រូវក្នុងការបង្កើតភាសា C ផងដែរ។ ជាក់ស្តែងដូចជាឈ្មោះរបស់វា ភាសានេះគឺជាផ្នែកបន្ថែមនៃភាសា C ។
វាអនុញ្ញាតឱ្យអ្នកសរសេរកម្មវិធីមានការគ្រប់គ្រងខ្ពស់លើធនធានប្រព័ន្ធ និងអង្គចងចាំ។ អ្នកប្រហែលជាគិតថាវាត្រូវបានអាប់ដេតរួចហើយ។ ទោះយ៉ាងណាក៏ដោយ ភាសានេះត្រូវបានធ្វើបច្ចុប្បន្នភាពបីដងក្នុងឆ្នាំ 2011, 2014, និង 2017។ វាបានទៅពី C++11, C++14 ទៅ C++17។
រហូតមកដល់សព្វថ្ងៃនេះ ភាសា C++ ត្រូវបានគេកោតសរសើរយ៉ាងខ្លាំង ដោយសារតែភាពចល័តដ៏សំខាន់របស់វា ដែលអនុញ្ញាតឱ្យអ្នកបង្កើតបង្កើតកម្មវិធីដែលអាចដំណើរការប្រកបដោយប្រសិទ្ធភាពលើប្រព័ន្ធប្រតិបត្តិការ ឬវេទិកាផ្សេងៗ។
ហេតុអ្វីបានជាមនុស្សជាច្រើនប្រើ C++?
ភាសានេះមានភាពទូលំទូលាយ ព្រោះវាជាភាសាសរសេរកម្មវិធីតម្រង់ទិសវត្ថុដែលផ្តល់នូវរចនាសម្ព័ន្ធច្បាស់លាស់ដល់កម្មវិធី និងជួយកាត់បន្ថយការចំណាយលើការអភិវឌ្ឍន៍ដោយអនុញ្ញាតឱ្យប្រើកូដឡើងវិញ។
ដោយសារតែដំណើរការខ្ពស់របស់វា ភាសានេះត្រូវបានប្រើដើម្បី បង្កើតហ្គេម កម្មវិធីកុំព្យូទ័រ កម្មវិធីរុករកតាមអ៊ីនធឺណិត និងប្រព័ន្ធប្រតិបត្តិការ។ លក្ខណៈពិសេសមួយទៀតនៃភាសានេះគឺថាវាអាចចល័តបាន និងអនុញ្ញាតឱ្យអ្នកបង្កើតកម្មវិធីដែលពួកគេអាចសម្របតាមវេទិកាច្រើន។
ទោះបីជាវាត្រូវបានគេស្គាល់ថាជាភាសាមួយក្នុងចំណោមភាសាដែលពិបាករៀនបំផុតក៏ដោយ វាមានអត្ថប្រយោជន៍របស់វា។ វាពិបាកយល់ជាងអ្នកដទៃ ដោយសារភាសាពហុគំរូ និងមុខងាររបស់វាវាក្យសម្ព័ន្ធកម្រិតខ្ពស់ជាង។
ប្រសិនបើអ្នកអាចរៀនភាសា C++ នោះវាកាន់តែត្រូវរៀនភាសាសរសេរកម្មវិធីផ្សេងទៀតបន្ទាប់ពីភាសានេះ ដូចជា Java និង Python ។
និយាយឱ្យខ្លី C ++ គឺជាគោលបំណងទូទៅ គឺជាភាសាសរសេរកម្មវិធីកម្រិតកណ្តាល ដែលធ្វើឱ្យវាអាចសរសេរកូដវានៅក្នុងរចនាប័ទ្ម "C" ។ ក្នុងករណីខ្លះ អ្នក អាចធ្វើការសរសេរកូដក្នុងទម្រង់ណាមួយ ដោយធ្វើឱ្យ C++ ជាឧទាហរណ៍នៃភាសាកូនកាត់ ។
ភាសា C និង C++ មានតួអក្សរ Null ទ្រនិច Null និង Null statement (តំណាងដោយ semicolon (;))។
Null ជាអ្វីនៅក្នុង C++?
Null ត្រូវបានចាត់ទុកជាថេរដែលមានស្រាប់ដែលមានតម្លៃសូន្យ។ វាជាចំនួនថេរ និងទ្រនិចក្នុងការសរសេរកម្មវិធីកុំព្យូទ័រ។
ខណៈពេលដែលនៅក្នុងមូលដ្ឋានទិន្នន័យ សូន្យគឺជាតម្លៃ។ តម្លៃ Null បង្ហាញថាគ្មានតម្លៃទេ។ នៅពេល Null ត្រូវបានប្រើជាតម្លៃ វាមិនមែនជាទីតាំងអង្គចងចាំទេ។
លើសពីនេះទៅទៀត ប្រសិនបើគ្មានតួអក្សរ Null នោះខ្សែអក្សរនឹងមិនអាចបញ្ចប់ដោយសមរម្យទេ ដែលនាំឱ្យមានបញ្ហាជាច្រើន។ តួអក្សរ Null មានការប្រើខុសគ្នាជាច្រើននៅទូទាំងភាសាកម្មវិធីផ្សេងគ្នា។
សំណួរគឺរបៀបដែលអ្នកនឹងសរសេរ Null ក្នុង C++ ។ ជាការប្រសើរណាស់ ប្រសិនបើថេរ Null មានប្រភេទចំនួនគត់ នោះវាអាចត្រូវបានបំប្លែងទៅជាតម្លៃនៃប្រភេទមួយ។
ឧទាហរណ៍ តួអក្សរនេះ “Null” ត្រូវបានប្រើនៅក្នុងភាសាសំណួរដែលមានរចនាសម្ព័ន្ធ (SQL) ជាសញ្ញាសម្គាល់ជាក់លាក់ដើម្បីបង្ហាញថាតម្លៃទិន្នន័យមិនមាននៅក្នុងមូលដ្ឋានទិន្នន័យទេ។ មូលដ្ឋានទិន្នន័យទំនាក់ទំនងគឺនៅពេលដែលតម្លៃនៅក្នុងជួរឈរជាក់លាក់មួយមិនស្គាល់ ឬបាត់។
លើសពីនេះទៅទៀត នៅក្នុង C#,ភាសាសរសេរកម្មវិធី Null តំណាងឱ្យ "គ្មានវត្ថុ" ។ នៅក្នុងភាសានេះ វាមិនដូចគ្នាទៅនឹងសូន្យថេរនោះទេ។
ទោះយ៉ាងណានៅក្នុងភាសា C++ តួអក្សរ Null គឺជាតម្លៃទ្រនិចដែលបានបម្រុងទុកតែមួយគត់ដែលមិនចង្អុលទៅវត្ថុទិន្នន័យត្រឹមត្រូវណាមួយឡើយ។ ដូចគ្នានេះផងដែរនៅក្នុងភាសា C ++ មុខងារ Null គឺគ្រាន់តែជាវិធីមួយដើម្បីផ្តល់តម្លៃដល់អថេរទ្រនិចប៉ុណ្ណោះ។
ភាពខុសគ្នារវាង Null និង Zero
ក្នុងនាមជា Null រក្សាតម្លៃ Zero មនុស្សតែងតែមានការភ័ន្តច្រឡំអំពីរបៀបដែលមួយនឹងខុសគ្នារវាង Null និង Zero។
Null ក្នុង C ++ គឺគ្រាន់តែជាម៉ាក្រូដែលកំណត់ថេរទ្រនិច Null ហើយជាទូទៅមានតម្លៃសូន្យ។ ទោះយ៉ាងណាក៏ដោយ Null ផ្តល់ឱ្យអ្នកនូវតម្លៃដ៏សំខាន់ដែលតំណាងឱ្យអថេរមិនមានទម្ងន់ណាមួយឡើយ។
ទោះយ៉ាងណា សូន្យគឺជាតម្លៃខ្លួនវា ហើយនោះជារបៀបដែលវានឹងនៅទូទាំងលំដាប់លំហូរ។ ម្យ៉ាងវិញទៀត Zero គឺជាតម្លៃលេខខ្លួនវា ចំណែក Null មានន័យថាទទេ។
អ្នកអាចគិតថាវាជា ទំហំជាក់លាក់សម្រាប់ទូរទឹកកក ។ ប្រសិនបើទូរទឹកកកនៅទីនោះ ប៉ុន្តែវាមិនមានអ្វីទាំងអស់ នោះតម្លៃគឺសូន្យ។ ម្យ៉ាងវិញទៀត ប្រសិនបើទំហំដែលឧទ្ទិសសម្រាប់ទូរទឹកកកមិនមានទូរទឹកកកទាល់តែសោះ នោះតម្លៃគឺ Null ។
តើ Nullptr មានន័យអ្វីនៅក្នុង C++?
ពាក្យគន្លឹះ “Nullptr” តំណាងឱ្យតម្លៃទ្រនិច Null ។ អ្នកនឹងប្រើតម្លៃទ្រនិច Null ដើម្បីបង្ហាញថាចំណុចទាញវត្ថុ ទ្រនិចខាងក្នុង ឬប្រភេទទ្រនិចដើមមិនចង្អុលទៅវត្ថុនោះទេ។
មានតែទ្រនិចប៉ុណ្ណោះដែលអាចរក្សាទីតាំងអង្គចងចាំ ហើយតម្លៃមិនអាចបាន។
ជាដំបូង យើងត្រូវយល់ថាទ្រនិចគឺជាអ្វី។ វាជាអថេរដែលផ្ទុកទីតាំងអង្គចងចាំ។
ទ្រនិច Null គឺជាទ្រនិចដែលបង្ហាញដោយចេតនានូវអ្វីទាំងអស់។ ប្រសិនបើអ្នកមិនមានអាសយដ្ឋានដែលអ្នកអាចកំណត់ទៅទ្រនិច អ្នកអាចប្រើ Null តម្លៃ Null ជៀសវាងការលេចធ្លាយអង្គចងចាំ និងការគាំងនៅក្នុងកម្មវិធីដែលមានទ្រនិច។
លើសពីនេះទៅទៀត ដើម្បីពិនិត្យរក Nullptr អ្នកអាចប្រើតម្លៃទ្រនិចជាលក្ខខណ្ឌមួយ ដើម្បីពិនិត្យមើលថាតើទ្រនិចគឺ Null ក្នុង C++ ដែរឬទេ។ នៅពេលប្រើក្នុងកន្សោមឡូជីខល ទ្រនិច Null ត្រូវបានវាយតម្លៃថាមិនពិត។
ដូច្នេះ មនុស្សម្នាក់អាចដាក់ទ្រនិចដែលបានផ្តល់ឱ្យនៅក្នុងលក្ខខណ្ឌ if statement ដើម្បីពិនិត្យមើលថាតើវាជា Null ដែរឬទេ។ សរុបមក Nullptr គឺជាពាក្យគន្លឹះប្រភេទទ្រនិចដែលតំណាងឱ្យសូន្យ ជាអាសយដ្ឋាន។
សំណួរទូទៅមួយគឺហេតុអ្វីបានជាត្រូវការ Nullptr នៅពេលដែលមានតួអក្សរ Null រួចហើយ។ នោះក៏ព្រោះតែនៅក្នុង C++11 Nullptr គឺជា Null pointer ថេរ ហើយវាត្រូវបានទាមទារព្រោះវាធ្វើអោយប្រសើរឡើងនូវសុវត្ថិភាពប្រភេទ។
តើ Null និង Nullptr ដូចគ្នាទេ?
ទេ។ ពួកគេមិនមែនទេ។ សូមពិនិត្យមើលតារាងខាងក្រោមដើម្បីដឹងជាមុនពីភាពខុសគ្នារបស់ពួកគេ។
សូមមើលផងដែរ: តើអ្វីជាភាពខុសគ្នារវាង Attila The Hun និង Genghis Khan? - ភាពខុសគ្នាទាំងអស់។Nullptr | Null |
ពាក្យគន្លឹះតំណាងឱ្យសូន្យ | តម្លៃសូន្យ |
តំណាងឱ្យសូន្យជាអាសយដ្ឋាន | តំណាងឱ្យតម្លៃជា ចំនួនគត់ |
មុខងារថ្មី និងបានណែនាំ | ចាស់ជាង និងអនុគមន៍ដែលបានបដិសេធ |
ប្រភេទទ្រនិចពិត | បានអនុវត្តជាឈ្មោះក្លែងក្លាយសម្រាប់ចំនួនគត់ សូន្យថេរ |
ចំណាំពាក្យគន្លឹះ ដើម្បីកុំឱ្យអ្នកច្រឡំ។
Null ត្រូវបានចាត់ទុកថាជា "manifest constant" ដែលតាមពិតចំនួនគត់ ហើយអាចត្រូវបានកំណត់ទៅទ្រនិចដោយសារតែការបំប្លែងដោយប្រយោល។
ខណៈដែល Nullptr គឺជាពាក្យគន្លឹះដែលតំណាងឱ្យតម្លៃនៃប្រភេទកំណត់ដោយខ្លួនឯង ហើយវាអាចបំប្លែងទៅជាទ្រនិច ប៉ុន្តែមិនមែនទៅជាចំនួនគត់ទេ។ Nullptr ជាទូទៅគឺជា Null pointer ហើយនឹងតែងតែជាមួយ។ ប្រសិនបើអ្នកព្យាយាមកំណត់វាទៅជាចំនួនគត់ វានឹងបណ្តាលឱ្យមានកំហុស។
ប្រសិនបើអ្នកនៅតែមិនយល់ សូមមើលវីដេអូនេះ។
វីដេអូនេះពន្យល់យ៉ាងម៉ត់ចត់អំពីអ្វី និងពេលណាដែលអ្នកគួរប្រើ Null ឬ nullptr—កូដរួមជាមួយកម្មវិធីផ្សាយ។
តើអ្នកអាចប្រើ Nullptr ជំនួស Null បានទេ?
បាទ/ចាស ។ ខណៈពេលដែលវាមិនដូចគ្នា មានវិធីមួយសម្រាប់អ្នកប្រើ Nullptr ជំនួស Null ។
ក្រៅពីនេះ Nullptr ជាពាក្យគន្លឹះថ្មីនៅក្នុង C++ ដែលអាចជំនួសដោយ ទុកជាមោឃៈ Nullptr ផ្តល់តម្លៃទ្រនិចប្រភេទសុវត្ថិភាពដែលតំណាងឱ្យទ្រនិចទទេ។
ខណៈពេលដែលអ្នកខ្លះជៀសវាងការប្រើ Null ដោយសារតែវាមិនសមស្រប នោះមិនសូវជាមានទេនាពេលបច្ចុប្បន្ននេះ ដោយសារអ្នកសរសេរកូដជាច្រើនកំពុងធ្វើតាមការណែនាំដើម្បីប្រើ Nullptr ជំនួសឱ្យ Null ។
លើសពីនេះទៀត អ្នកអាចប្រើពាក្យគន្លឹះ Nullptr ដើម្បីសាកល្បងថាតើទ្រនិច ឬចំណុចទាញសេចក្តីយោងគឺ Null មុនពេលឯកសារយោងត្រូវបានប្រើ។
តើអ្នកអាចបដិសេធ Nullptr បានទេ?
អ្នកអាចកំណត់ nullptr ។ ប្រសិនបើអ្នកធ្វើដូច្នេះ អ្នកអាចចូលប្រើតម្លៃនៅអាសយដ្ឋានដែលទ្រនិចកំពុងចង្អុលទៅ។
នៅក្នុងភាសាកុំព្យូទ័រ ការបដិសេធត្រូវបានប្រើដើម្បីចូលប្រើ ឬរៀបចំទិន្នន័យដែលមាននៅក្នុងទីតាំងអង្គចងចាំដែលចង្អុលទៅដោយទ្រនិច។
ទោះយ៉ាងណា អ្នកមិនអាចធ្វើនេះជាភាសា C ។ ទ្រនិច Null មិនចង្អុលទៅវត្ថុដែលមានន័យថាជាការព្យាយាមបដិសេធដែលកំពុងចូលប្រើទិន្នន័យដែលបានរក្សាទុក។ ទ្រនិច Null ជាធម្មតានាំទៅរកកំហុសពេលដំណើរការ ឬគាំងកម្មវិធីភ្លាមៗ។
ក្នុងការសរសេរកម្មវិធីកុំព្យូទ័រ ប្រតិបត្តិករ dereference គឺជាអ្វីដែលដំណើរការលើអថេរទ្រនិច។ វាត្រឡប់ តម្លៃទីតាំងនៅក្នុងអង្គចងចាំដែលចង្អុលទៅដោយតម្លៃរបស់អថេរ ។ នៅក្នុងភាសាសរសេរកម្មវិធី C++ សេចក្តីអនុគ្រោះដែលដំណើរការត្រូវបានតំណាងដោយសញ្ញាផ្កាយ (*) ។
ការគិតចុងក្រោយ
គេអាចកំណត់ Null ជាម៉ាក្រូដែលផ្តល់លទ្ធផលដល់សូន្យទ្រនិច ដែលមានន័យថាគ្មានអាសយដ្ឋានសម្រាប់អថេរនោះ។ Null គឺជាម៉ាក្រូចាស់នៅក្នុងភាសា C ដែលត្រូវបានបញ្ជូនទៅ C++ ។
ទន្ទឹមនឹងនោះ Nullptr គឺជាកំណែថ្មីជាងដែលបានណែនាំនៅក្នុង C++11 ហើយមានន័យថាជាការជំនួស Null ។
ដូច្នេះហើយ ថ្ងៃនេះ វាត្រូវបានណែនាំឱ្យអ្នកចាប់ផ្តើមប្រើ Nullptr នៅកន្លែងដែលអ្នកនឹងប្រើ Null ជំនួសវិញកាលពីអតីតកាល ឬសូម្បីតែការសរសេរនេះ។
ចុចទីនេះដើម្បីមើលកំណែខ្លីនៃអត្ថបទនេះ។