อาร์เรย์และโครงสร้างคือที่เก็บข้อมูลประเภทต่างๆ ที่ใช้ในภาษาคอมพิวเตอร์ยุคที่สาม ภาษารุ่นที่สามที่ใช้เรียกว่า C++
ผู้คนกำลังก้าวไปข้างหน้าและเริ่มใช้ภาษาคอมพิวเตอร์ยุคที่สี่ที่ซับซ้อนน้อยกว่า เช่น Java แต่นั่นไม่ได้หมายความว่า C ++ ใช้งานไม่ได้
ประเด็นที่สำคัญ
- อาร์เรย์จัดเก็บองค์ประกอบหลายรายการที่เป็นประเภทข้อมูลเดียวกัน ในขณะที่โครงสร้างสามารถมีองค์ประกอบประเภทข้อมูลต่างๆ ได้
- อาร์เรย์ใช้ชื่อเดียวกับดัชนีเพื่อเข้าถึงองค์ประกอบ ในขณะที่โครงสร้างใช้เครื่องหมายจุดกับชื่อสมาชิกแต่ละคน
- อาร์เรย์ต้องการการจัดสรรหน่วยความจำอย่างต่อเนื่อง ในขณะที่โครงสร้างจัดสรรหน่วยความจำสำหรับสมาชิกแต่ละคนแยกกัน
อาร์เรย์กับโครงสร้าง
ความแตกต่างระหว่างอาร์เรย์และโครงสร้างคืออาร์เรย์มีองค์ประกอบที่สม่ำเสมอหรือเป็นเนื้อเดียวกัน หมายความว่ามีตัวแปรประเภทข้อมูลเดียวกันทั้งหมด ในทางกลับกันโครงสร้างประกอบด้วยองค์ประกอบที่ต่างกัน หมายความว่าองค์ประกอบทั้งหมดที่อยู่ในโครงสร้างนั้นมีประเภทข้อมูลที่แตกต่างกัน
อาร์เรย์เป็นองค์ประกอบคอนเทนเนอร์ในภาษา C++ ที่เก็บตัวแปรต่างๆ มากมายที่เป็นข้อมูลประเภทเดียวกัน เช่น ชื่อ อนุกรม ตัวเลข เมือง ฯลฯ
ตัวแปรประเภทข้อมูลเดียวกันมักเรียกว่า “homogenous arrays” ชื่ออาร์เรย์แสดงชื่อของตัวแปรทั้งหมดที่รวมอยู่ในอาร์เรย์นั้นๆ
ดังนั้นจึงทำให้ผู้ใช้สามารถแยกแยะอาร์เรย์หนึ่งจากอีกอาร์เรย์ได้ง่ายขึ้น
โครงสร้างเป็นองค์ประกอบคอนเทนเนอร์ใน C ++ ที่เก็บข้อมูลหลายประเภทข้อมูล ซึ่งหมายความว่าโครงสร้างสามารถมีข้อมูลชื่อ เมือง และหมายเลขลำดับแต่ละรายการได้
โครงสร้างจำเป็นต้องมีหลายคอลัมน์หรือเครื่องหมายเฉพาะเพื่อระบุชื่อข้อมูลแต่ละประเภท อาจทำให้เข้าใจการทำงานของโครงสร้างได้ค่อนข้างยากเนื่องจากทำให้เกิดความสับสน
ตารางเปรียบเทียบ
พารามิเตอร์ของการเปรียบเทียบ | แถว | โครงสร้าง |
---|---|---|
ผู้ประกอบการ | วงเล็บเหลี่ยม | จุดหรือจุด |
คำสำคัญ | ไม่มี | “โครงสร้าง” |
ประเภทข้อมูล | เดียว | หลาย |
พื้นที่จัดเก็บ | อย่างต่อเนื่อง | ไม่ต่อเนื่อง |
ที่ผู้ใช้กำหนด | ไม่ | ใช่ |
อาร์เรย์คืออะไร?
พูดง่ายๆ ก็คือ อาร์เรย์เป็นหนึ่งในหลายองค์ประกอบที่ใช้ใน C++ เพื่อจัดหมวดหมู่ข้อมูลในพื้นที่เฉพาะ
เป็นองค์ประกอบคอนเทนเนอร์ที่เก็บข้อมูลประเภทข้อมูลเดียวกัน
หมายความว่าในโปรแกรม C++ เกี่ยวกับโรงเรียน อาร์เรย์เดียวอาจเก็บตัวแปรทั้งหมดได้
ตัวแปรเหล่านี้อาจอยู่ภายใต้ประเภทข้อมูลรหัสนักเรียนหรือชื่อนักเรียน
โรงเรียนโปรแกรมสามารถมีข้อมูลหลายประเภท เช่น ชื่อ ชั้นเรียน บ้าน เลขที่รับเข้าเรียน อายุ เพศ ฯลฯ
แต่ละอาร์เรย์เก็บรายละเอียดทั้งหมดของนักเรียนในโรงเรียนเกี่ยวกับประเภทข้อมูลเฉพาะ
ไวยากรณ์สำหรับอาร์เรย์คือ “type array_name [size];”
เครื่องหมายอัฒภาคในตอนท้ายเป็นสิ่งที่จำเป็น หากไม่มี คำสั่งจะไม่ถูกประมวลผล
เป็นเพราะคำสั่งทั้งหมดทั้งใน C++ และ ชวา ปิดท้ายด้วยเครื่องหมายอัฒภาค
องค์ประกอบหรือตัวแปรในอาร์เรย์ทั้งหมดถูกจัดเก็บในลักษณะที่ต่อเนื่องกัน
มันหมายถึงตำแหน่งที่ต่อเนื่องตลอดทั้งโปรแกรม
เนื่องจากสถานที่จัดเก็บตำแหน่งที่อยู่ติดกันของอาร์เรย์ จึงสามารถค้นหาตำแหน่งที่ต้องการโดยใช้ชื่อได้ง่ายกว่า
นอกจากนี้ยังจะทำให้เข้าถึงได้ง่าย
แต่ในการค้นหาและเข้าถึงอาร์เรย์ ชื่ออาร์เรย์ไม่ใช่สิ่งเดียวที่จำเป็น ผู้สร้างหรือผู้ใช้ต้องมีหมายเลขดัชนีของแต่ละอันเพื่อให้ค้นหาได้ง่าย
ตัวดำเนินการ C++ เพื่อค้นหาหรือเข้าถึงอาร์เรย์คือวงเล็บเหลี่ยม
ชื่อของอาร์เรย์ยังทำหน้าที่เป็นตัวชี้
เพราะมันชี้ไปที่ตัวแปรตัวแรกในอาร์เรย์
ไม่สามารถสร้างตัวแปรใหม่ได้หลังจากเขียนโค้ดของโปรแกรม C++ เสร็จแล้ว ดังนั้นผู้สร้างต้องแน่ใจว่าได้เพิ่มองค์ประกอบที่จำเป็นทั้งหมดแล้วก่อนที่จะบันทึกโปรแกรม
คุณลักษณะของอาร์เรย์คือองค์ประกอบทั้งหมดที่เก็บไว้มีขนาดเท่ากัน
อาร์เรย์ไม่มีการประกาศพิเศษหรือคำหลักที่ประกาศจุดเริ่มต้น
อาร์เรย์ไม่ได้กำหนดโดยผู้ใช้ หมายความว่าผู้ใช้ไม่สามารถแก้ไขหรือทำซ้ำโค้ดได้ และมีเพียงผู้สร้างหรือผู้เขียนโค้ดเท่านั้นที่มีสิทธิ์นั้น
โครงสร้างคืออะไร?
โครงสร้างเป็นหนึ่งในองค์ประกอบคอนเทนเนอร์จำนวนมากที่ใช้บ่อยในภาษาโปรแกรม C++
โครงสร้างประกอบด้วยประเภทข้อมูลที่แตกต่างกันทั้งหมด
หมายความว่า ตัวอย่างเช่น ในโครงสร้างชื่อ "โรงเรียน" อาจมีประเภทข้อมูลทั้งหมดเกี่ยวกับนักเรียน ซึ่งรวมถึงชื่อ รหัสนักเรียน เพศ ผู้ปกครอง ฯลฯ
ชนิดข้อมูลทั้งหมดอยู่ภายใต้หัวข้อเดียว ซึ่งจะไม่เป็นหัวข้อของชนิดข้อมูลใดๆ
ไวยากรณ์หรือรูปแบบการเข้ารหัสของโครงสร้างคือ “struct struct_name type element a; พิมพ์องค์ประกอบ b ตัวแปร a, ตัวแปร b;”
เครื่องหมายอัฒภาคเป็นสิ่งจำเป็น เนื่องจากหากไม่มีเครื่องหมายอัฒภาค โครงสร้างทั้งหมดจะไม่เกิดขึ้นและจะถูกลบออกจากโปรแกรมโดยอัตโนมัติ
ข้อเสียเปรียบเกี่ยวกับโครงสร้างคือข้อมูลทั้งหมดที่อยู่ในนั้นไม่ได้จัดเก็บไว้ในที่เดียวหรือต่อเนื่องกัน
หมายความว่าข้อมูลกระจายอยู่ทั่วพื้นที่จัดเก็บหน่วยความจำที่กำหนดให้กับโปรแกรมเฉพาะ
คุณลักษณะนี้ทำให้ยากต่อการค้นหาโครงสร้างเฉพาะ แม้ว่าผู้ใช้อาจทราบชื่อของโครงสร้างก็ตาม
ดังนั้นการเข้าถึงโครงสร้างจึงเป็นเรื่องยากและต้องใช้เวลา
วิธีเดียวในการเข้าถึงโครงสร้างคือการค้นหาชื่อ ไม่มีตัวเลขหรือค่าดัชนีเพื่อค้นหาและเข้าถึง
ในการเข้าถึงโครงสร้าง ตัวแปรที่ต้องใช้คือจุดหรือจุด เรียกว่าตัวแปร dot หรือ “ตัวดำเนินการจุด” ในภาษา C++
ไม่สามารถกล่าวได้ว่าชื่อโครงสร้างเป็นตัวชี้
เป็นเพราะไม่มีข้อกำหนดใน C ++ เพื่อให้ชื่อโครงสร้างระบุชื่อของตัวแปรตัวแรก
แม้จะบันทึกโครงสร้างเฉพาะแล้วก็ยังสามารถเพิ่มตัวแปรได้
สิ่งนี้มีประโยชน์เนื่องจากผู้ใช้สามารถใช้ข้อกำหนดนี้เพื่อเพิ่มตัวแปรที่อยู่ใน ซิงค์ ด้วยโครงสร้าง
ด้วยเหตุนี้ โครงสร้างจึงเรียกอีกอย่างว่า "คอนเทนเนอร์ที่ผู้ใช้กำหนด"
เนื่องจากโครงสร้างมีข้อมูลประเภทต่างๆ มากมาย องค์ประกอบและตัวแปรทั้งหมดในโครงสร้างเหล่านั้นจึงมีขนาดต่างกัน
ในการระบุโครงสร้าง เราสามารถดูที่ตัวเริ่มต้นเริ่มต้นหรือคำสำคัญ มันบ่งบอกถึงการเริ่มต้นของโครงสร้าง
คำหลักนี้คือ "struct"
ความแตกต่างหลักระหว่างอาร์เรย์และโครงสร้าง
- ในขณะที่การประกาศตัวแปรหรือตัวดำเนินการที่ใช้ในการเข้าถึงอาร์เรย์คือวงเล็บเหลี่ยม ตัวดำเนินการและตัวแปรการประกาศสำหรับโครงสร้างคือจุด ซึ่งเรียกอีกอย่างว่าตัวดำเนินการจุด
- ชื่อของอาร์เรย์ทำหน้าที่เป็นตัวชี้ แต่ชื่อของโครงสร้างไม่ได้ทำหน้าที่เป็นตัวชี้
- อาร์เรย์ไม่ได้กำหนดโดยผู้ใช้ ดังนั้น ผู้ใช้จึงไม่สามารถแก้ไขคอนเทนเนอร์ได้ แต่ผู้ใช้สามารถแก้ไขโครงสร้างได้ตามที่ผู้ใช้กำหนด
- ข้อมูลที่อยู่ในอาร์เรย์จะถูกจัดเก็บอย่างต่อเนื่องในโปรแกรม แต่ในกรณีของโครงสร้างจะเก็บข้อมูลไม่ต่อเนื่อง
- เข้าถึงข้อมูลภายในอาร์เรย์ได้ง่ายกว่า ในขณะที่ข้อมูลที่จัดเก็บไว้ในโครงสร้างเข้าถึงได้ยาก
อ้างอิง
- https://www.sciencedirect.com/science/article/pii/S0098300404001396
- https://iopscience.iop.org/article/10.1088/0953-8984/17/5/001/meta
อัพเดตล่าสุด : 13 กรกฎาคม 2023
Sandeep Bhandari สำเร็จการศึกษาระดับปริญญาตรี สาขาวิศวกรรมคอมพิวเตอร์จาก Thapar University (2006) เขามีประสบการณ์ 20 ปีในสาขาเทคโนโลยี เขามีความสนใจในด้านเทคนิคต่างๆ รวมถึงระบบฐานข้อมูล เครือข่ายคอมพิวเตอร์ และการเขียนโปรแกรม คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเขาได้จากเขา หน้าไบโอ.