เดอะ ตัวชี้ว่าง แนวคิดมีความสำคัญอย่างยิ่งเนื่องจากช่วยป้องกันการเข้าถึงหน่วยความจำที่ผิดพลาด ซึ่งอาจส่งผลให้เกิดข้อผิดพลาดรันไทม์ที่ไม่คาดคิดและความล้มเหลวของซอฟต์แวร์ พิจารณาสถานการณ์เมื่อโปรแกรมพยายามอ่านหรือเขียนไปยังที่อยู่หน่วยความจำที่ยังไม่ได้สร้างขึ้นหรือถูกยกเลิกการจัดสรรแล้ว ลักษณะการทำงานนั้นไม่สามารถกำหนดได้ใน C++ และอาจส่งผลให้เกิดปัญหารันไทม์หรือข้อบกพร่องด้านความปลอดภัย ตัวชี้ไม่ถูกต้องและไม่ควรอ้างอิงหากเชื่อมโยงกับค่า Null การยุติโปรแกรม ความผิดพลาดในการแบ่งเซกเมนต์ หรือการเข้าถึงหน่วยความจำโดยไม่ได้รับอนุญาตเป็นเพียงตัวอย่างเล็กๆ น้อยๆ ของพฤติกรรมที่ไม่คาดคิดที่อาจเกิดขึ้นเมื่ออ้างอิงถึง ตัวชี้ว่าง .
ตัวอย่างของ nullptr ใน C++
#รวมถึงโดยใช้ เนมสเปซ มาตรฐาน ;
นานาชาติ หลัก ( )
{
nullptr_t pi1, pi2 ;
ถ้า ( ปี่ที่ 1 >= ปี่2 )
{
ศาล << 'ตัวชี้ 1 มากกว่าค่าตัวชี้ 2' << จบ ;
}
อื่น
{
ศาล << 'ตัวชี้ 2 มากกว่าค่าตัวชี้ 1' << จบ ;
}
ถ่าน * ช = ปี่ที่ 1 ;
ถ้า ( ช == nullptr )
ศาล << 'ตัวแปรตัวชี้ ch มีค่า null พร้อมการอ้างอิงที่อยู่ 0' << จบ ;
อื่น
ศาล << 'ตัวแปรตัวชี้ ch ไม่ใช่ค่าว่าง แต่มีค่าบางอย่างพร้อมการอ้างอิงที่อยู่' << จบ ;
กลับ 0 ;
}
ในโค้ดด้านบน เราใช้สองตัว nullptrs และนำมาเปรียบเทียบกัน จากนั้นเราจะใช้ตัวชี้อักขระเพื่อตรวจสอบความถูกต้องของ nullptr .
เอาต์พุต
เหตุผลในการใช้ nullptr ใน C ++
พอยน์เตอร์เป็นโมฆะ มักใช้ในการเขียนโปรแกรม C++ ด้วยเหตุผลหลายประการ:
1: การเริ่มต้นพอยน์เตอร์
เมื่อมีการประกาศตัวแปรพอยน์เตอร์ ควรเริ่มต้นตัวแปรนั้นด้วยตำแหน่งหน่วยความจำที่ถูกต้องหรือก ตัวชี้ว่าง . เมื่อตัวชี้ถูกเข้าถึงในภายหลังในรหัส สิ่งนี้จะช่วยป้องกันพฤติกรรมที่ไม่ได้ประกาศ
2: รหัสข้อผิดพลาด
ฟังก์ชั่นอาจกลับมา ตัวชี้ว่าง เป็นรหัสข้อผิดพลาดเพื่อแสดงว่าไม่สามารถดำเนินการตามที่ระบุหรือจัดสรรหน่วยความจำได้
3: การตรวจสอบความถูกต้องของตัวชี้
การตรวจสอบความถูกต้องของตัวชี้ก่อนที่จะยกเลิกการอ้างอิงนั้นเป็นแนวคิดที่ชาญฉลาดเสมอ สิ่งนี้จะเพิ่มความทนทานของโค้ดและช่วยป้องกันความล้มเหลวของรันไทม์ที่ไม่คาดคิด
4: ความหลากหลาย
ใน C++ ตัวชี้คลาสพื้นฐานที่ไม่ได้ชี้ไปที่ออบเจกต์ใดๆ ของคลาสที่ได้รับจะถูกแทนด้วย ตัวชี้ว่าง . โดยทั่วไปจะใช้ในการเขียนโปรแกรมแบบ polymorphic เพื่อจัดการกับคุณสมบัติเชิงวัตถุ เช่น การสืบทอดและฟังก์ชันเสมือน
พอยน์เตอร์เป็นโมฆะ ไม่ควรสับสนกับตัวชี้ห้อยหรือตัวชี้ที่ไม่ได้กำหนดค่าเริ่มต้น จำเป็นอย่างยิ่งที่จะต้องจำสิ่งนี้ พอยน์เตอร์ที่ไม่ได้กำหนดค่าเริ่มต้นสามารถชี้ไปยังแอดเดรสใดๆ ในหน่วยความจำได้ เนื่องจากไม่ได้กำหนดค่าเริ่มต้น ในทางกลับกัน ตัวชี้ที่ห้อยเป็นตัวชี้ที่อ้างถึงพื้นที่หน่วยความจำที่ไม่ถูกต้องหรือถูกจัดสรรไปแล้ว ในการเขียนโปรแกรม C++ ทั้ง dangling pointer และ unitialized pointer ต่างก็มีแนวโน้มที่จะส่งผลให้เกิดปัญหารันไทม์ได้
ข้อดีของการใช้ nullptr ใน C++
มีประโยชน์หลายประการในการใช้ก nullptr .
1: ความปลอดภัย
เพราะ nullptr เป็นประเภทที่ปลอดภัยกว่า NULL ควรใช้แทน ในขณะที่ NULL ถูกกำหนดให้เป็นค่าคงที่จำนวนเต็มที่มีค่าเป็นศูนย์ nullptr เป็นพอยน์เตอร์ลิเทอรัลที่สามารถแปลงเป็นประเภทพอยน์เตอร์เท่านั้น และเปลี่ยนเป็นประเภทอื่นไม่ได้
2: การใช้งาน
ในการเขียนโปรแกรม C++ มีหลายวิธีในการใช้ ตัวชี้ว่าง . ในการเริ่มต้นพอยน์เตอร์ ให้ส่งพารามิเตอร์ไปยังการเรียกใช้ฟังก์ชัน หรือส่งกลับค่าพอยน์เตอร์จากฟังก์ชัน ดังตัวอย่าง การใช้งานบางอย่างที่เป็นไปได้ นอกจากนี้ยังอาจใช้เพื่อพิจารณาว่าการเรียกใช้ฟังก์ชันหรือการดำเนินการให้ค่าตัวชี้ที่ถูกต้องหรือไม่
3: การจัดสรรหน่วยความจำแบบไดนามิก
การจัดสรรหน่วยความจำแบบไดนามิกเป็นหนึ่งในการใช้งานยอดนิยมของ ตัวชี้ว่าง . การใช้โอเปอเรเตอร์ใหม่ใน C++ การจัดสรรหน่วยความจำแบบไดนามิกจะสำเร็จ เมื่อเรียกใช้เมธอดใหม่ ตัวชี้ไปยังออบเจกต์ที่สร้างขึ้นใหม่จะถูกส่งกลับ หากการจัดสรรล้มเหลวด้วยเหตุผลใดก็ตาม เช่น มีหน่วยความจำไม่เพียงพอ NULL จะถูกส่งกลับ ดังนั้น การตรวจสอบค่าที่ส่งคืนจึงเป็นสิ่งสำคัญก่อนที่จะใช้ตัวชี้เพื่อให้แน่ใจว่าการจัดสรรสำเร็จ
บทสรุป
เดอะ ตัวชี้ว่าง เป็นแนวคิดหลักในการเขียนโปรแกรม C++ ที่ให้กลไกในการแสดงว่าไม่มีที่อยู่ในหน่วยความจำ นักพัฒนาสามารถป้องกันซอฟต์แวร์ล่มและปัญหาอื่นๆ ได้โดยใช้ ตัวชี้ว่าง เพื่อให้แน่ใจว่าแอปพลิเคชันของพวกเขาไม่พยายามเข้าถึงที่อยู่หน่วยความจำที่ผิดพลาด ดังนั้นจึงจำเป็นอย่างยิ่งที่โปรแกรมเมอร์จะต้องเข้าใจวิธีการ ตัวชี้ว่าง ควรใช้และทำอย่างมีประสิทธิภาพในโปรแกรมของตน