อะไรคือความแตกต่างระหว่าง Null และ Nullptr ใน C ++? (แบบละเอียด) – ความแตกต่างทั้งหมด

 อะไรคือความแตกต่างระหว่าง Null และ Nullptr ใน C ++? (แบบละเอียด) – ความแตกต่างทั้งหมด

Mary Davis

“Nullptr” ถือเป็นคีย์เวิร์ดที่แสดงค่าศูนย์เป็นที่อยู่ ในขณะที่ “Null” คือค่าศูนย์ที่เป็นจำนวนเต็ม

หากคุณเป็นโปรแกรมเมอร์ คุณอาจรู้ว่าการเข้าใจภาษาคอมพิวเตอร์เพื่อเขียนโค้ดได้ดีขึ้นนั้นสำคัญเพียงใด แต่บางครั้งอาจทำให้สับสนเล็กน้อยและคุณอาจสับสนระหว่างสองสิ่ง

กรณีของ Null และ Nullptr ในภาษา C++ คล้ายคลึงกัน ให้ฉันบอกคุณว่าคำสองคำนี้หมายถึงอะไรและหน้าที่ของพวกเขาเพื่อช่วยให้คุณเข้าใจความแตกต่างและการใช้งานของพวกเขา

มาเจาะลึกกัน!

ภาษาคอมพิวเตอร์คืออะไร?

ภาษาคอมพิวเตอร์สามารถกำหนดเป็นรหัสหรือไวยากรณ์ที่ใช้ในการเขียนโปรแกรมและแอปพลิเคชันเฉพาะ

โดยพื้นฐานแล้ว เป็นภาษาทางการที่ใช้ในการสื่อสารกับคอมพิวเตอร์ ในทำนองเดียวกัน ประเทศต่างๆ มีภาษาต่างๆ ที่ช่วยให้ผู้คนแบ่งปันความคิด คอมพิวเตอร์ก็เช่นกัน

สิ่งเหล่านี้ถูกประดิษฐ์ขึ้นเพื่อทำความเข้าใจการเขียนโปรแกรมของคอมพิวเตอร์และทำงานบนสิ่งเหล่านี้ โดยทั่วไป ภาษาคอมพิวเตอร์สามารถแบ่งออกเป็น สามประเภทหลัก:

  • ภาษาแอสเซมบลี

    ซึ่งถือว่าเป็นภาษาระดับต่ำที่ใช้สำหรับไมโครโปรเซสเซอร์ และอุปกรณ์ที่ตั้งโปรแกรมได้อื่นๆ อีกมากมาย เป็นภาษารุ่นที่สอง เป็นที่รู้จักในการเขียนระบบปฏิบัติการและเขียนแอปพลิเคชันเดสก์ท็อปต่างๆ

  • ภาษาเครื่อง

    ภาษาพื้นเมืองนี้เป็นภาษารุ่นแรกเรียกว่ารหัสเครื่องหรือแม้แต่รหัสวัตถุ โดยมีชุดของเลขฐานสอง 0 และ 1 ตัวเลขเหล่านี้จะถูกเข้าใจและอ่านโดยระบบคอมพิวเตอร์ที่ตีความอย่างรวดเร็ว

  • ภาษาระดับสูง

    สิ่งนี้สร้างขึ้นเนื่องจากปัญหาการพกพาในภาษาที่เก่ากว่า รหัสไม่สามารถถ่ายโอนได้ ซึ่งหมายถึงรหัสที่เขียนในเครื่องเดียว ภาษานี้เข้าใจง่ายและยังเป็นมิตรกับผู้ใช้อีกด้วย

ส่วนของภาษาที่คอมพิวเตอร์เข้าใจเรียกว่า "ไบนารี" ในทางกลับกัน การแปลภาษาโปรแกรมเป็นไบนารีเรียกว่า "การคอมไพล์"

กล่าวโดยสรุปคือ ภาษาโปรแกรมทำให้ผู้คนสามารถส่งคำสั่งไปยังคอมพิวเตอร์เพื่อให้สามารถอ่านและดำเนินการได้ ภาษาคอมพิวเตอร์แต่ละภาษามีคุณสมบัติที่แตกต่างกัน ตั้งแต่ภาษา C ไปจนถึงภาษาไพธอน

ภาษาเหล่านี้ช่วยให้คอมพิวเตอร์สามารถประมวลผลข้อมูลขนาดใหญ่และซับซ้อนได้อย่างมีประสิทธิภาพมากขึ้นและรวดเร็วยิ่งขึ้น ปัจจุบันมีภาษาโปรแกรมหลายภาษาในโลก บางส่วน ได้แก่ Java, Python, HTML, C, C++ และ SQL

ภาษา C++ คืออะไร

ภาษา C++ เป็นหนึ่งในภาษาโปรแกรมที่ได้รับความนิยมมากที่สุดในโลก คุณจะพบภาษานี้ในระบบปฏิบัติการ ส่วนติดต่อผู้ใช้แบบกราฟิก และระบบฝังตัวในโลกปัจจุบัน

เป็นภาษาข้ามแพลตฟอร์มที่ใช้สร้างแอปพลิเคชันประสิทธิภาพสูง ก่อตั้งภาษา C++โดย Bjarne Stroustrup ซึ่งเป็นผู้รับผิดชอบในการสร้างภาษา C เห็นได้ชัดตามชื่อ ภาษานี้เป็นส่วนขยายของภาษาซี

ช่วยให้โปรแกรมเมอร์สามารถควบคุมทรัพยากรระบบและหน่วยความจำได้สูง คุณอาจคิดว่ามีการอัปเดตแล้ว อย่างไรก็ตาม ภาษาได้รับการอัปเดตสามครั้งในปี 2011, 2014 และ 2017 โดยเปลี่ยนจาก C++11, C++14 เป็น C++17

จนถึงทุกวันนี้ ภาษา C++ เป็นที่นิยมอย่างมากเนื่องจากพกพาสะดวก ทำให้ผู้สร้างสามารถพัฒนาโปรแกรมที่สามารถทำงานบนระบบปฏิบัติการหรือแพลตฟอร์มต่างๆ ได้อย่างมีประสิทธิภาพ

เหตุใดหลายคนจึงใช้ C++

ภาษานี้เป็นที่แพร่หลาย เนื่องจากเป็นภาษาโปรแกรมเชิงวัตถุที่ให้โครงสร้างที่ชัดเจนแก่โปรแกรมและช่วยลดต้นทุนการพัฒนาโดยอนุญาตให้นำรหัสกลับมาใช้ใหม่ได้

เนื่องจากประสิทธิภาพสูง ภาษานี้จึงถูกใช้เพื่อ พัฒนาเกม แอปเดสก์ท็อป เบราว์เซอร์ และระบบปฏิบัติการ คุณสมบัติอีกอย่างของภาษานี้คือพกพาได้และอนุญาตให้สร้างแอปพลิเคชันที่สามารถปรับให้เข้ากับหลายแพลตฟอร์มได้

แม้ว่าจะเป็นที่รู้กันว่าเป็นหนึ่งในภาษาที่ท้าทายที่สุดในการเรียนรู้ แต่ก็มีข้อดี เข้าใจยากกว่าภาษาอื่นเนื่องจากภาษาหลายกระบวนทัศน์และฟังก์ชันไวยากรณ์ขั้นสูงกว่า

หากคุณสามารถเรียนรู้ภาษา C++ ได้ คุณจะได้เรียนรู้อะไรอีกมากภาษาโปรแกรมอื่นๆ หลังจากนี้ เช่น Java และ Python

โดยสรุป C++ เป็นภาษาสำหรับใช้งานทั่วไป เป็นภาษาโปรแกรมระดับกลางที่ทำให้สามารถเขียนโค้ดในรูปแบบ "C" ได้ ในบางกรณี คุณ สามารถเขียนโค้ดได้ทั้งสองรูปแบบ ทำให้ C++ เป็นตัวอย่างของภาษาไฮบริด

ภาษา C และ C++ มีอักขระ Null ตัวชี้ Null และคำสั่ง Null (แสดงด้วยเครื่องหมายอัฒภาค (;))

Null คืออะไรใน ซี++?

Null ถือเป็นค่าคงที่ในตัวที่มีค่าเป็นศูนย์ เป็นทั้งค่าคงที่และตัวชี้ในการเขียนโปรแกรมคอมพิวเตอร์

ในขณะที่อยู่ในฐานข้อมูล ศูนย์คือค่า ค่า Null บ่งชี้ว่าไม่มีค่าใดอยู่ เมื่อใช้ Null เป็นค่า จะไม่ใช่ตำแหน่งหน่วยความจำ

ยิ่งไปกว่านั้น หากไม่มีอักขระ Null สตริงจะไม่สามารถยุติได้อย่างเหมาะสม ซึ่งนำไปสู่ปัญหามากมาย อักขระ Null มีการใช้งานที่แตกต่างกันมากมายในภาษาการเขียนโปรแกรมต่างๆ

ดูสิ่งนี้ด้วย: Formula 1 Cars vs Indy Cars (โดดเด่น) – ความแตกต่างทั้งหมด

คำถามคือคุณจะเขียน Null ใน C++ อย่างไร ถ้าค่าคงที่ Null มีประเภทจำนวนเต็ม มันก็สามารถแปลงเป็นค่าของการเรียงลำดับได้

ตัวอย่างเช่น อักขระนี้ "Null" ถูกใช้ในภาษา Query ที่มีโครงสร้าง (SQL) เป็นเครื่องหมายเฉพาะเพื่อระบุว่าไม่มีค่าข้อมูลอยู่ในฐานข้อมูล ฐานข้อมูลเชิงสัมพันธ์คือเมื่อไม่ทราบค่าในคอลัมน์ที่ระบุหรือหายไป

ยิ่งไปกว่านั้น ใน C#เป็นภาษาโปรแกรม Null ย่อมาจาก "no object" ในภาษานี้ ไม่เหมือนกับค่าคงที่ศูนย์

อย่างไรก็ตาม ในภาษา 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 เพื่อตรวจสอบว่าเป็น Null หรือไม่ กล่าวโดยย่อ Nullptr คือคีย์เวิร์ดประเภทตัวชี้ที่แทนศูนย์ เป็นที่อยู่

คำถามที่พบบ่อยคือเหตุใดจึงจำเป็นต้องใช้ Nullptr เมื่อมีอักขระ Null อยู่แล้ว นั่นเป็นเพราะใน C++11 Nullptr เป็นค่าคงที่ตัวชี้ Null และจำเป็นเนื่องจากจะปรับปรุงความปลอดภัยของประเภท

Null และ Nullptr เหมือนกันหรือไม่

ไม่ พวกเขาไม่. ตรวจสอบตารางนี้ด้านล่างเพื่อทราบความแตกต่างก่อน

Nullptr Null
คำหลักที่แสดงค่าศูนย์ ค่าศูนย์
แสดงค่าศูนย์เป็นที่อยู่ แสดงค่าเป็น จำนวนเต็ม
ใหม่กว่าและฟังก์ชันที่แนะนำ เก่ากว่าและเลิกใช้ฟังก์ชัน
ประเภทตัวชี้จริง ใช้งานเป็นนามแฝงสำหรับจำนวนเต็ม

ศูนย์คงที่

จดคำหลักไว้เพื่อที่คุณจะได้ไม่สับสน

ค่า Null ถือเป็น "ค่าคงที่ที่ชัดแจ้ง" ซึ่งจริงๆ แล้วเป็นจำนวนเต็มและสามารถกำหนดให้กับตัวชี้ได้เนื่องจากการแปลงโดยนัย

ดูสิ่งนี้ด้วย: อะไรคือความแตกต่างระหว่างราศีเมถุนที่เกิดในเดือนพฤษภาคมและมิถุนายน? (ระบุ) - ความแตกต่างทั้งหมด

ในขณะที่ Nullptr เป็นคำหลักที่แสดงถึงค่าของประเภทที่กำหนดขึ้นเอง และสามารถแปลงเป็นตัวชี้แต่ไม่สามารถแปลงเป็นจำนวนเต็มได้ โดยทั่วไปแล้ว Nullptr เป็นตัวชี้ Null และจะเป็นตัวเดียวเสมอ หากคุณพยายามกำหนดให้เป็นจำนวนเต็ม จะทำให้เกิดข้อผิดพลาด

หากคุณยังไม่เข้าใจ โปรดดูวิดีโอนี้

วิดีโอนี้อธิบายอย่างละเอียดว่าอะไรและเมื่อใดที่คุณควรใช้ Null หรือ nullptr—โค้ดร่วมกับสตรีมเมอร์

คุณสามารถใช้ Nullptr แทน Null ได้ไหม

ใช่ แม้ว่าจะไม่เหมือนกัน แต่ก็มีวิธีให้คุณใช้ Nullptr แทน Null ได้

นอกจากนี้ Nullptr ยังเป็นคีย์เวิร์ดใหม่ใน C++ ที่สามารถแทนที่ โมฆะ. Nullptr ให้ค่าพอยน์เตอร์ชนิดปลอดภัยซึ่งแทนพอยน์เตอร์ว่าง

ในขณะที่บางคนหลีกเลี่ยงการใช้ Null เนื่องจากไม่เหมาะสม แต่ในปัจจุบันพบน้อยลง เนื่องจากผู้เขียนโค้ดหลายคนทำตามคำแนะนำให้ใช้ Nullptr แทน Null

นอกจากนี้ คุณสามารถใช้คีย์เวิร์ด Nullptr เพื่อทดสอบว่าการอ้างอิงพอยน์เตอร์หรือแฮนเดิลเป็น Null ก่อนที่จะใช้การอ้างอิง

คุณสามารถอ้างอิง Nullptr ได้หรือไม่?

คุณสามารถอนุมานค่า nullptr ได้ หากคุณทำเช่นนั้น คุณจะสามารถเข้าถึงค่าตามที่อยู่ที่ตัวชี้ชี้ไป

ในภาษาคอมพิวเตอร์ การอ้างอิงจะใช้เพื่อเข้าถึงหรือจัดการข้อมูลที่อยู่ในตำแหน่งหน่วยความจำที่ตัวชี้ชี้ไป

อย่างไรก็ตาม คุณไม่สามารถทำได้ในภาษา C ตัวชี้ Null ไม่ชี้ไปที่วัตถุที่สื่อความหมาย ซึ่งเป็นความพยายามที่จะอ้างอิง ซึ่งกำลังเข้าถึงข้อมูลที่เก็บไว้ ตัวชี้ Null มักจะนำไปสู่ข้อผิดพลาดรันไทม์หรือโปรแกรมหยุดทำงานทันที

ในการเขียนโปรแกรมคอมพิวเตอร์ ตัวดำเนินการอ้างอิงคือสิ่งที่ทำงานบนตัวแปรตัวชี้ จะส่งกลับ ค่าตำแหน่งในหน่วยความจำที่ชี้ไปโดยค่าของตัวแปร ในภาษาการเขียนโปรแกรม C++ การดำเนินการตามคำสั่งจะมีสัญลักษณ์เป็นเครื่องหมายดอกจัน (*)

ความคิดสุดท้าย

เราสามารถกำหนด Null เป็นมาโครที่ให้ตัวชี้เป็นศูนย์ ซึ่งหมายความว่าไม่มีที่อยู่สำหรับตัวแปรนั้น Null เป็นแมโครเก่าในภาษา C ที่ส่งต่อไปยัง C++

ในขณะเดียวกัน Nullptr เป็นเวอร์ชันที่ใหม่กว่าซึ่งเปิดตัวใน C++11 และมีความหมายแทน Null

ดังนั้น ในวันนี้ ขอแนะนำให้คุณเริ่มใช้ Nullptr ในตำแหน่งที่คุณเคยใช้ Null แทนในอดีต หรือแม้แต่ตอนที่เขียนนี้

    คลิกที่นี่เพื่อดูฉบับย่อของบทความนี้

    Mary Davis

    Mary Davis เป็นนักเขียน ผู้สร้างเนื้อหา และนักวิจัยตัวยงที่เชี่ยวชาญด้านการวิเคราะห์เปรียบเทียบในหัวข้อต่างๆ ด้วยปริญญาด้านสื่อสารมวลชนและประสบการณ์กว่า 5 ปีในสาขานี้ แมรี่มีความปรารถนาที่จะให้ข้อมูลที่เป็นกลางและตรงไปตรงมาแก่ผู้อ่านของเธอ ความรักในการเขียนของเธอเริ่มขึ้นเมื่อเธอยังเด็กและเป็นแรงผลักดันให้เธอประสบความสำเร็จในอาชีพการเขียน ความสามารถของ Mary ในการค้นคว้าและนำเสนอสิ่งที่ค้นพบในรูปแบบที่เข้าใจง่ายและมีส่วนร่วมทำให้เธอเป็นที่ชื่นชอบของผู้อ่านทั่วโลก เมื่อเธอไม่ได้เขียน แมรี่ชอบท่องเที่ยว อ่านหนังสือ และใช้เวลากับครอบครัวและเพื่อนฝูง