Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่างประเภท string และ char[] ใน C++


ในส่วนนี้ เราจะมาดูกันว่าอะไรคือความแตกต่างระหว่าง string และ char[] ใน C++ char[] นั้นเป็นอาร์เรย์ของอักขระ จึงมีคุณสมบัติบางอย่างของอาร์เรย์นี้ คุณสมบัติเหล่านี้แสดงอยู่ด้านล่าง

  • หากมีการจัดสรร char[] ในส่วนสแต็ก มันจะใช้พื้นที่ 256 ไบต์เสมอ จะไม่ขึ้นอยู่กับขนาดของข้อความ

  • หากเราใช้ malloc() หรือ calloc() เพื่อจัดสรรพื้นที่แบบไดนามิกในส่วนฮีป เราต้องรับผิดชอบในการปล่อยหน่วยความจำหลังจากใช้งาน และเรามีค่าใช้จ่ายในการจัดสรรฮีปเสมอ

  • หากขนาดของอาร์เรย์อักขระใหญ่กว่า 256 อักขระ โปรแกรมอาจขัดข้อง มันอาจสร้างข้อความยืนยันที่น่าเกลียดในโค้ดของเรา

  • เพื่อให้ได้ความยาวของสตริง เราต้องสแกนอาร์เรย์อักขระทั้งหมดจนกว่าจะถึงอักขระ '\0' ทุกครั้ง

ในทางกลับกัน C ++ มีสตริงในเนมสเปซมาตรฐาน สตริงนี้เป็นคลาส และมีอาร์เรย์อักขระอยู่ภายใน โดยอัตโนมัติจัดการสำหรับผู้ใช้ ในกรณีส่วนใหญ่ อาร์เรย์ในตัวสำหรับสตริงคือ 16 อักขระ ดังนั้นสำหรับสตริงที่สั้นกว่า จะไม่แยกส่วนสตริง แต่สำหรับสตริงที่ใหญ่กว่า จะใช้ส่วนฮีป

สตริง C ++ มีอักขระ '\0' ในตัว มันเก็บความยาวของสตริงโดยไม่นับ สำหรับข้อความที่สั้นกว่านั้นไม่ใช้ฮีปจากนั้นจะป้องกันการโอเวอร์รันบัฟเฟอร์ และยิ่งไปกว่านั้น สตริงยังใช้งานง่ายในภาษา C++