คำถามติดแท็ก null-terminated

18
เหตุผลของการยกเลิกสตริงเป็นโมฆะคืออะไร?
เท่าที่ฉันรัก C และ C ++ ฉันไม่สามารถช่วย แต่เกาหัวของฉันในการเลือกสตริงที่สิ้นสุดด้วยค่า null: มีความยาวนำหน้าสตริง (เช่น Pascal) ที่มีอยู่ก่อนหน้า C สตริงที่มีคำนำหน้าความยาวทำให้อัลกอริทึมหลายอย่างเร็วขึ้นโดยอนุญาตให้ค้นหาความยาวของเวลาคงที่ สตริงที่มีคำนำหน้าความยาวทำให้ยากต่อการทำให้เกิดข้อผิดพลาดบัฟเฟอร์เกิน แม้บนเครื่อง 32 บิตหากคุณอนุญาตให้สตริงเป็นขนาดของหน่วยความจำที่มีอยู่สตริงที่ขึ้นต้นความยาวจะมีความกว้างเพียงสามไบต์กว้างกว่าสตริงที่สิ้นสุดด้วยค่า null บนเครื่อง 16 บิตนี่เป็นไบต์เดียว บนเครื่อง 64 บิต 4GB เป็นขีดจำกัดความยาวของสตริงที่เหมาะสม แต่แม้ว่าคุณต้องการขยายให้มีขนาดของคำว่าเครื่องเครื่อง 64 บิตมักจะมีหน่วยความจำเพียงพอที่จะทำให้อาร์กิวเมนต์ที่เจ็ดมีค่าเพิ่มขึ้นอีกเจ็ดไบต์ ฉันรู้ว่ามาตรฐาน C ดั้งเดิมเขียนขึ้นสำหรับเครื่องที่ไม่ดีอย่างบ้าคลั่ง (ในแง่ของหน่วยความจำ) แต่อาร์กิวเมนต์ประสิทธิภาพไม่ได้ขายที่นี่ ค่อนข้างทุกภาษาอื่น ๆ (เช่น Perl, Pascal, Python, Java, C #, ฯลฯ ) ใช้สตริงคำนำหน้าความยาว ภาษาเหล่านี้มักจะเอาชนะ C ในมาตรฐานการจัดการสตริงเพราะพวกเขามีประสิทธิภาพมากขึ้นด้วยสตริง …
281 c++  c  string  null-terminated 

3
อะไรคือคำจำกัดความของคำนิยามของสตริงใน C?
ฉันควรจะตอบคำถามการบ้านสำหรับชั้นเรียนของฉัน โดยเฉพาะฉันควรจะบอกว่าอาร์เรย์บางตัวใน C ถือเป็นสตริงหรือไม่ อ้างอิงจากบทความนี้ ( https://www.geeksforgeeks.org/strings-in-c-2/ ) ฉันรู้ว่าสตริงนั้นเป็นอาร์เรย์ของตัวละครที่มีตัวสิ้นสุด null ในตอนท้าย Hangup หลักของฉันเป็นส่วนหนึ่งของคำถามที่ถามเกี่ยวกับอาร์เรย์ที่มีลักษณะดังนี้: char c1[] = { 'C', 'S', '\0', '3', '2', '4', '\0' }; เห็นได้ชัดว่านี่คืออาเรย์ของอักขระที่มีอักขระสิ้นสุดในตอนท้าย อย่างไรก็ตามมันยังถือว่าเป็นสตริงเพราะมันยังมีอักขระยุติกลางที่? สิ่งนั้นจะมีผลกับสตริงอย่างไร? แก้ไข: จากความคิดเห็นฉันได้ให้ถ้อยคำที่แท้จริงของคำถาม: "อาร์เรย์ใดต่อไปนี้ถือเป็น" สตริง "เพื่อจุดประสงค์ในการใช้เป็นอาร์กิวเมนต์สำหรับ strcpy (), strncpy (), strcmp (), strcmp (), strncmp () และฟังก์ชั่นสตริงที่คล้ายกัน (ระบุถึงการใช้ทั้งหมด)" แก้ไข: ฉันส่งอีเมลถึงอาจารย์ของฉันเกี่ยวกับเรื่องนี้เนื่องจากคำถามดูเหมือนจะคลุมเครือคำ (หลายคนชี้ให้เห็น) ถ้าใครอยากรู้อยากเห็นเขาบอกฉันว่า "ใช่มันเป็นสตริงที่สำคัญคือว่ามีตัวละครที่เป็นโมฆะ …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.