nullptr ใน C ++ คืออะไร

Nullptr Ni C Khux Xari



ใน C++ ค่าตัวชี้เฉพาะที่เรียกว่า a ตัวชี้ว่าง ใช้เพื่อระบุว่าตัวชี้ไม่ได้อ้างอิงถึงตำแหน่งหน่วยความจำที่ถูกต้อง ในมาตรฐาน C++11 หรือใหม่กว่า จะแทนด้วยคีย์เวิร์ด “ nullptr ” หรือโดยค่าคงที่ของ 0

เดอะ ตัวชี้ว่าง แนวคิดมีความสำคัญอย่างยิ่งเนื่องจากช่วยป้องกันการเข้าถึงหน่วยความจำที่ผิดพลาด ซึ่งอาจส่งผลให้เกิดข้อผิดพลาดรันไทม์ที่ไม่คาดคิดและความล้มเหลวของซอฟต์แวร์ พิจารณาสถานการณ์เมื่อโปรแกรมพยายามอ่านหรือเขียนไปยังที่อยู่หน่วยความจำที่ยังไม่ได้สร้างขึ้นหรือถูกยกเลิกการจัดสรรแล้ว ลักษณะการทำงานนั้นไม่สามารถกำหนดได้ใน 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++ ที่ให้กลไกในการแสดงว่าไม่มีที่อยู่ในหน่วยความจำ นักพัฒนาสามารถป้องกันซอฟต์แวร์ล่มและปัญหาอื่นๆ ได้โดยใช้ ตัวชี้ว่าง เพื่อให้แน่ใจว่าแอปพลิเคชันของพวกเขาไม่พยายามเข้าถึงที่อยู่หน่วยความจำที่ผิดพลาด ดังนั้นจึงจำเป็นอย่างยิ่งที่โปรแกรมเมอร์จะต้องเข้าใจวิธีการ ตัวชี้ว่าง ควรใช้และทำอย่างมีประสิทธิภาพในโปรแกรมของตน