อะไรคือความแตกต่างระหว่าง Null และ Nullptr ใน C ++? (แบบละเอียด) – ความแตกต่างทั้งหมด
สารบัญ
“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 แทนในอดีต หรือแม้แต่ตอนที่เขียนนี้
คลิกที่นี่เพื่อดูฉบับย่อของบทความนี้