ความแตกต่างระหว่าง Array Character กับ String

ผู้เขียน: Laura McKinney
วันที่สร้าง: 1 เมษายน 2021
วันที่อัปเดต: 6 พฤษภาคม 2024
Anonim
Array of String in C Programming language
วิดีโอ: Array of String in C Programming language

เนื้อหา


C ++ รองรับทั้งสอง อาร์เรย์อักขระและสตริงเนื่องจาก C ++ มีประโยชน์มากมายในการใช้งานทั้งคู่ แต่การไม่สามารถทำงานกับอาเรย์อักขระทำให้เกิดการพัฒนาของคลาสสตริงได้ ทั้งอาร์เรย์อักขระและสตริงมีลำดับของอักขระ แต่ความแตกต่างพื้นฐานระหว่างอาร์เรย์อักขระและสตริงคือ "อาร์เรย์อักขระ" ไม่สามารถดำเนินการกับตัวดำเนินการมาตรฐานได้ในขณะที่วัตถุ "สตริง" สามารถดำเนินการกับตัวดำเนินการมาตรฐานได้ มาศึกษาความแตกต่างอื่น ๆ ระหว่างอาร์เรย์อักขระกับสตริง

  1. แผนภูมิเปรียบเทียบ
  2. คำนิยาม
  3. ความแตกต่างที่สำคัญ
  4. ข้อสรุป

แผนภูมิเปรียบเทียบ

พื้นฐานสำหรับการเปรียบเทียบArray ตัวละครเชือก
ขั้นพื้นฐานอาร์เรย์อักขระคือชุดของตัวแปรของชนิดข้อมูลอักขระสตริงเป็นคลาสและตัวแปรของสตริงเป็นวัตถุของคลาส "สตริง"
วากยสัมพันธ์ถ่าน array_name;สตริง string_name;
การจัดทำดัชนีอักขระแต่ละตัวในอาร์เรย์อักขระสามารถเข้าถึงได้โดยดัชนีในอาร์เรย์ในสตริงอักขระเฉพาะสามารถเข้าถึงได้โดยฟังก์ชัน "string_name.charAt (index)"
ประเภทข้อมูลอาร์เรย์อักขระไม่ได้กำหนดประเภทข้อมูลสตริงกำหนดประเภทข้อมูลใน C ++
ผู้ประกอบการผู้ประกอบการใน C ++ ไม่สามารถใช้กับอาเรย์อักขระได้คุณอาจใช้ตัวดำเนินการ C ++ มาตรฐานกับสตริง
เขตแดนขอบเขตของอาเรย์นั้นเกินขอบเขตอย่างง่ายดายเขตแดนจะไม่ย่ำยี
ทางเข้าเข้าถึงได้อย่างรวดเร็วเข้าถึงช้า


นิยามของ Character Array


อาร์เรย์อักขระคือชุดของตัวแปรของ "char" ประเภทข้อมูล; มันสามารถเป็นอาร์เรย์หนึ่งมิติหรืออาร์เรย์สองมิติ มันจะเรียกว่า "สตริงสิ้นสุดด้วยค่า null" อาร์เรย์อักขระคือลำดับของอักขระที่เก็บไว้ในที่อยู่หน่วยความจำต่อเนื่อง ในอาร์เรย์อักขระอักขระเฉพาะสามารถเข้าถึงได้โดยดัชนี “ ตัวอักษร Null” ยุติอาร์เรย์อักขระ”

ลองมาดูตัวอย่างชุดอักขระ: -

char name = {A, j, a, y, 0}; หรือ char name = "Ajay";

ที่นี่ "ถ่าน" เป็นชนิดข้อมูลตัวอักษร "ชื่อ" เป็นชื่อตัวแปรของอาร์เรย์ตัวละคร ฉันได้แสดงสองวิธีในการเริ่มต้นอาร์เรย์อักขระ ในวิธีแรกนั้น null จะถูกกล่าวถึงอย่างชัดเจนและในวิธีที่สองคอมไพเลอร์จะแทรก null โดยอัตโนมัติ

จุดสิ้นสุดของสตริงมักจะเป็นอักขระที่ไม่มีค่าเสมอ มันเป็นตัวละครที่สิ้นสุดของอาร์เรย์ตัวละคร อาร์เรย์อักขระไม่ใช่ชนิดข้อมูลในตัว เราสร้างอาร์เรย์อักขระโดยการประกาศ คุณไม่สามารถใช้โอเปอเรเตอร์มาตรฐานกับอาเรย์อักขระได้ ในการใช้งานอาเรย์อักขระมีฟังก์ชันในตัวเช่น, (strlen (), strlwr (), strupr (), strcat ()) เนื่องจากตัวดำเนินการมาตรฐานไม่สามารถใช้กับอาร์เรย์อักขระได้จึงไม่สามารถมีส่วนร่วมในนิพจน์ใด ๆ ได้


ตัวชี้อักขระไปยังอาร์เรย์อักขระสามารถสร้างได้

มาทำความเข้าใจกับตัวอย่าง

ถ่าน s1 = "สวัสดี"; ถ่าน s2 = "ท่าน"; s1 = s1 + s2; // ผู้ประกอบการผิดพลาดไม่สามารถใช้ s2 = s1; // ข้อผิดพลาดตัวชี้อักขระถ่าน * s = "เช้า"; ถ่าน * p; p = s; // รัน

ในตัวอย่างข้างต้นเราได้ประกาศอาร์เรย์อักขระสองตัว s1, s2 และตัวชี้อักขระสองตัว s และ p อักขระอาร์เรย์ s1 และ s2 ถูกเตรียมใช้งานเราจะเห็นได้ว่าตัวดำเนินการเพิ่ม (+) และตัวดำเนินการกำหนดไม่ทำงานในอาร์เรย์อักขระ แต่สามารถกำหนดตัวชี้อักขระให้กับตัวชี้อักขระอื่นได้

โปรดจำไว้ว่าเมื่อเริ่มต้นอาร์เรย์อักขระจะไม่สามารถเริ่มต้นได้อีกครั้งกับชุดอักขระอื่น การเข้าถึงอาร์เรย์อักขระหรือสตริงที่สิ้นสุดด้วยค่า null นั้นรวดเร็วเมื่อเปรียบเทียบกับสตริงใน C ++

คำจำกัดความของ String

สตริงไม่ใช่ชนิดข้อมูลในตัวของ C ++ มันเป็นวัตถุชั้นเรียนประเภท "สตริง" เช่นเดียวกับในการสร้างคลาส C ++ เหมือนกับการสร้าง“ ประเภท” คลาส“ string” เป็นส่วนหนึ่งของไลบรารี C ++ มันถือชุดของตัวละครหรืออาร์เรย์ตัวละครโดยรวม มีเหตุผลสามประการที่อยู่เบื้องหลังการพัฒนาคลาสสตริงมาตรฐาน

  • เป็นครั้งแรก คือ "ความสอดคล้อง" อาร์เรย์อักขระไม่ใช่ชนิดข้อมูลในสิทธิ์ของตนเอง
  • ที่สอง คือ "ความสะดวกสบาย" คุณไม่สามารถใช้ตัวดำเนินการมาตรฐานกับอาเรย์อักขระได้
  • ที่สาม คือ "ความปลอดภัย" ขอบเขตของอาเรย์นั้นเต็มไปด้วยความง่ายดาย

ให้เราเข้าใจสตริงด้วยตัวอย่าง

สตริง s1; s1 = "สวัสดี"; สตริง s2 ("อรุณสวัสดิ์"); string s3 = "Hennery"; สตริง s4;

ในการประกาศข้างต้นตัวแปรสตริงหรือวัตถุสี่รายการ (s1, s2, s3, s4) จะถูกประกาศ ในการประกาศข้างต้นฉันได้แสดงสามวิธีในการเริ่มต้นสตริง สตริง s1 ถูกประกาศจากนั้นเริ่มต้นแยกกัน สตริง s2 ถูกเตรียมใช้งานโดยตัวสร้างของคลาส“ String” สตริง s3 ถูกเตรียมใช้งานในเวลาที่ประกาศเป็นชนิดข้อมูลปกติทำ เราสามารถใช้โอเปอเรเตอร์มาตรฐานกับตัวแปรสตริงได้

s4 = s1; // การกำหนดสตริงวัตถุหนึ่งให้กับอีก s4 = s1 + s2; // เพิ่มสองสตริงและเก็บผลลัพธ์ในสตริงที่สามถ้า (s3> s2) // เปรียบเทียบสองสตริง s5 (s1); การสร้างวัตถุสตริงใหม่โดยใช้วัตถุสตริงที่มีอยู่

ในรหัสข้างต้นผู้ประกอบการต่างๆจะถูกนำไปใช้กับสตริงและการดำเนินการต่างๆจะดำเนินการ คำสั่งแรกคัดลอกวัตถุสตริงหนึ่งไปยังวัตถุสตริงอื่น ในคำสั่งที่สองสตริงสองตัวจะถูกต่อกันและเก็บไว้ในสตริงที่สาม ในคำสั่งที่สามมีการเปรียบเทียบสองสตริง ในคำสั่งที่สี่วัตถุสตริงใหม่จะถูกสร้างขึ้นโดยใช้วัตถุสตริงที่มีอยู่แล้ว

การเข้าถึงสตริงช้ากว่าเมื่อเปรียบเทียบกับอาร์เรย์อักขระหรือสตริงที่สิ้นสุดด้วยค่า null

ความแตกต่างที่สำคัญระหว่างชุดอักขระและสตริง

  1. อาร์เรย์อักขระคือชุดของตัวแปรที่เป็นประเภทข้อมูลอักขระ String เป็นคลาสที่สร้างอินสแตนซ์เพื่อประกาศสตริง
  2. การใช้ค่าดัชนีคุณสามารถเข้าถึงอักขระจากอาร์เรย์อักขระ ในทางกลับกันหากคุณต้องการเข้าถึงอักขระเฉพาะในสตริงคุณสามารถเข้าถึงได้โดยใช้ฟังก์ชันสตริง'_name.charAt (ดัชนี)
  3. ในฐานะที่เป็นอาร์เรย์ไม่ได้เป็นประเภทข้อมูลในทำนองเดียวกันตัวละครยังไม่ได้เป็นประเภทข้อมูล ในทางกลับกันสตริงเป็นคลาสที่ทำหน้าที่เป็นประเภทอ้างอิงดังนั้นจึงอาจกล่าวได้ว่าสตริงเป็นชนิดข้อมูล
  4. คุณไม่สามารถใช้โอเปอเรเตอร์กับอาเรย์อักขระได้ในขณะที่คุณสามารถใช้โอเปอเรเตอร์กับ String ได้
  5. การเป็นอาร์เรย์อักขระอาเรย์มีความยาวคงที่และขอบเขตของมันสามารถถูกบุกรุกได้ง่าย โดยที่ String ไม่มีขอบเขตใด ๆ
  6. องค์ประกอบ Array จะถูกเก็บไว้ในตำแหน่งหน่วยความจำต่อเนื่องซึ่งสามารถเข้าถึงได้เร็วกว่าตัวแปรสตริง

สรุป:

การไม่สามารถทำงานกับอาเรย์อักขระทำให้เกิดการพัฒนาคลาสสตริงมาตรฐาน