วิธีการกำหนดขนาดของอาร์เรย์

สารบัญ:

วิธีการกำหนดขนาดของอาร์เรย์
วิธีการกำหนดขนาดของอาร์เรย์

วีดีโอ: วิธีการกำหนดขนาดของอาร์เรย์

วีดีโอ: วิธีการกำหนดขนาดของอาร์เรย์
วีดีโอ: การกำหนดขนาดตัวอย่าง Full 2024, อาจ
Anonim

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

วิธีการกำหนดขนาดของอาร์เรย์
วิธีการกำหนดขนาดของอาร์เรย์

จำเป็น

คอมไพเลอร์ C ++

คำแนะนำ

ขั้นตอนที่ 1

กำหนดขนาดของอาร์เรย์ในเวลาคอมไพล์โดยการคำนวณโดยใช้ตัวดำเนินการ sizeof โอเปอเรเตอร์นี้ส่งคืนจำนวนหน่วยความจำ (เป็นไบต์) ที่อาร์กิวเมนต์ส่งไป อาร์กิวเมนต์อาจเป็นตัวแปรหรือตัวระบุประเภทก็ได้ ตัวดำเนินการ sizeof จะคืนค่าจำนวนหน่วยความจำที่จำกัดที่วัตถุครอบครองไว้ในขั้นตอนการทำงานของโปรแกรม (โดยคำนึงถึงการตั้งค่าสำหรับการจัดตำแหน่งฟิลด์โครงสร้าง) แต่การคำนวณจะดำเนินการในขั้นตอนการรวบรวม

ขั้นตอนที่ 2

ในการกำหนดขนาดของอาร์เรย์โดยใช้ตัวดำเนินการ sizeof ให้แบ่งขนาดทั้งหมดด้วยขนาดขององค์ประกอบเดียว ตัวอย่างเช่น หากคุณมีคำจำกัดความของอาร์เรย์ดังต่อไปนี้: int aTemp = {10, 20, 0xFFFF, -1, 16} สามารถคำนวณขนาดของอาร์เรย์ได้ดังนี้: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);

ขั้นตอนที่ 3

เพื่อความสะดวกในการใช้วิธีนี้ ให้กำหนดมาโคร: #define countof (a) (sizeof (a) / sizeof (a [0])) โปรดสังเกตว่า เนื่องจากค่าของตัวดำเนินการ sizeof ถูกคำนวณที่คอมไพล์ เวลา ณ จุดที่ทำการคำนวณ ข้อมูลเกี่ยวกับปริมาณของอาร์เรย์และองค์ประกอบของอาร์เรย์จะต้องเปิดเผยอย่างชัดเจน กล่าวอีกนัยหนึ่ง เป็นไปไม่ได้ที่จะกำหนดพารามิเตอร์ของอาร์เรย์ที่มีขนาดที่ไม่รู้จักโดยการประกาศภายนอก

ขั้นตอนที่ 4

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

ขั้นตอนที่ 5

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

ขั้นตอนที่ 6

รับขนาดของไดนามิกอาร์เรย์ที่แสดงโดยเฟรมเวิร์กหรืออ็อบเจ็กต์ไลบรารีโดยเรียกใช้เมธอด คลาสใด ๆ ที่สรุปการทำงานของอาร์เรย์ดังกล่าวมีวิธีการรับจำนวนองค์ประกอบปัจจุบัน ตัวอย่างเช่น คลาสเทมเพลต std:: vector ของไลบรารีมาตรฐาน C ++ มีวิธีการวัดขนาด คลาส QVector ของเฟรมเวิร์ก Qt มีวิธีการนับ และคลาส CArray ที่คล้ายคลึงกันของ MFC มีเมธอด GetCount