วิธีคืนค่าอาร์เรย์

สารบัญ:

วิธีคืนค่าอาร์เรย์
วิธีคืนค่าอาร์เรย์

วีดีโอ: วิธีคืนค่าอาร์เรย์

วีดีโอ: วิธีคืนค่าอาร์เรย์
วีดีโอ: อธิบายโครงสร้างข้อมูลแบบ อาร์เรย์ Array 1 มิติและ 2 มิติ และมานำมาใช้เขียนโปรแกรม 2024, อาจ
Anonim

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

วิธีคืนค่าอาร์เรย์
วิธีคืนค่าอาร์เรย์

จำเป็น

  • - โปรแกรมแก้ไขข้อความ;
  • - คอมไพเลอร์และตัวเชื่อมโยง C หรือ C ++

คำแนะนำ

ขั้นตอนที่ 1

ส่งคืนข้อมูลจากฟังก์ชันหรือเมธอดโดยวางไว้ในอาร์เรย์ที่มีความยาวคงที่ จัดสรรโดยผู้เรียก และส่งผ่านโดยการอ้างอิง กำหนดประเภทข้อมูลที่เหมาะสม เช่น typedef int t_array10 [10]; ใช้ในการประกาศและการใช้งานฟังก์ชันหรือวิธีการที่ต้องการ: void ReturnArray (t_array10 & raOut) {raOut [0] = 10;} โทรอย่างเหมาะสม: int aNumbers [10]; ReturnArray (aNumbers); ข้อเสียของวิธีนี้คือความยาวของอาร์เรย์ได้รับการแก้ไข

ขั้นตอนที่ 2

ส่งคืนข้อมูลอาร์เรย์โดยวางไว้ในบัฟเฟอร์เอาต์พุตที่ผู้โทรจัดสรรซึ่งส่งผ่านโดยตัวชี้ ต้นแบบของฟังก์ชันหรือเมธอดสามารถมีพารามิเตอร์ที่ประกาศทั้งในสัญกรณ์อาร์เรย์โดยไม่มีข้อกำหนดเกี่ยวกับขนาด: void ReturnArray (int anArray , int nSize); หรือเป็นตัวชี้: void ReturnArray (int * pnArray, int nSize); ในทั้งคู่ กรณี พารามิเตอร์ตัวระบุสามารถใช้ในรูปแบบอาร์เรย์: void ReturnArray (int * pnArray, int nSize) {for (nSize--; nSize> -1; pnArray [nSize] = nSize--);} // call int aNumbers [10]; ReturnArray (aNumbers, sizeof (aNumbers) / sizeof (aNumbers [0])); วิธีการนี้ในการส่งผ่านอาร์เรย์ไปยังฟังก์ชันและการส่งคืนข้อมูลอาร์เรย์จากอาร์เรย์ดังกล่าว มักใช้ในกรณีส่วนใหญ่ในการพัฒนาโปรแกรม C โปรดทราบว่า ฟังก์ชันและวิธีการที่ยอมรับและส่งคืนข้อมูลด้วยวิธีนี้ ตามกฎแล้ว ต้องมีพารามิเตอร์เพิ่มเติมซึ่งส่งผ่านขนาดที่แท้จริงของบัฟเฟอร์

ขั้นตอนที่ 3

ส่งกลับอาร์เรย์ที่สร้างขึ้นในฟังก์ชันหรือวิธีการ อย่างเป็นทางการ ในกรณีนี้ ไม่ควรส่งคืนอาร์เรย์ แต่เป็นตัวชี้ไปยังองค์ประกอบแรก: int * ReturnArray () {int * pnArray = new int [10]; // ทำงานกับ pnArray return pnArray;} // รับตัวชี้ไปยังอาร์เรย์ที่สร้างขึ้น int * pnNumbers = ReturnArray (); // ใช้ delete pnNumbers; // delete เมธอดนี้มีข้อจำกัดบางประการ ดังนั้นอาร์เรย์จะต้องอยู่ในฮีป นอกจากนี้ การลบจะต้องดำเนินการด้วยวิธีที่สอดคล้องกับการสร้าง (ลบในกรณีที่ใช้ new, ฟรีสำหรับ malloc เป็นต้น)

ขั้นตอนที่ 4

ใช้คลาสคอนเทนเนอร์เพื่อส่งคืนอาร์เรย์อย่างสะดวกเมื่อพัฒนาโปรแกรม C ++ ตัวอย่างของการสร้างและส่งคืนอาร์เรย์ที่เป็นวัตถุของคลาสเทมเพลตเวกเตอร์ของไลบรารีเทมเพลตมาตรฐาน C ++ ที่ระบุสำหรับ int อาจมีลักษณะดังนี้: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oอาร์เรย์ [1] = 200; return oArray;} std:: vector oArray = ReturnArray (); โปรดทราบว่าเฟรมเวิร์กยอดนิยมส่วนใหญ่มีคลาสที่มีประสิทธิภาพหรือเทมเพลตคลาสอาร์เรย์ พวกเขามักจะใช้แนวคิดของการแบ่งปันข้อมูลโดยนัยด้วยการนับอ้างอิงและการคัดลอกเมื่อเขียน ดังนั้นการส่งคืนด้วยค่าของอาร์เรย์ดังกล่าวจากฟังก์ชันจึงดำเนินการได้อย่างมีประสิทธิภาพและสัมพันธ์กับการใช้ทรัพยากรการคำนวณขั้นต่ำ