מערכים הם אחת הצורות הפשוטות ביותר של אחסון נתונים מובנה. מכיוון שאזורי זיכרון בלתי ניתנים לחלוקה מוקצים לאחסון מערכים חד-ממדיים, ולרוב שפות התכנות יש מבנים תחביריים להצהרתם, הם משמשים באופן אינטנסיבי כמאגרים להעברת כמויות גדולות של מידע לפונקציות שונות (כולל ספריה). בתורם, לפעמים פונקציות צריכות להחזיר מערך.
נחוץ
- - עורך טקסט;
- - מהדר 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 = int int [10]; // לעבוד עם pnArray החזר pnArray;} // קבל מצביע למערך שנוצר int * pnNumbers = ReturnArray (); // השתמש ב- delete pnNumbers; // מחק לשיטה זו יש מגבלות מסוימות. לכן, המערך חייב להיות ממוקם בערימה. בנוסף, מחיקתו חייבת להיעשות בשיטה המתאימה ליצירה (מחק במקרה של שימוש חדש, ללא תשלום למאלוק וכו ').
שלב 4
השתמש בכיתות מיכל להחזרת מערכים בנוחות בעת פיתוח תוכניות C ++. דוגמה ליצירה והחזרת מערך שהוא אובייקט של מחלקת תבנית הווקטור בספריית התבניות הסטנדרטית C ++ שצוינה עבור int עשויה להיראות כך: #include std:: vector ReturnArray () {std:: vector oArray; oArray.resize (10); oArray [0] = 100; oArray [1] = 200; להחזיר oArray;} std:: וקטור oArray = ReturnArray (); שים לב שרוב המסגרות הפופולריות מספקות שיעורים חזקים או תבניות מחלקה מערכתיות. לעתים קרובות הם מיישמים את הרעיון של שיתוף נתונים מרומז עם ספירת הפניות והעתקה על כתיבה. לכן, החזרה לפי ערך מערכים כאלה מפונקציות מתבצעת ביעילות רבה וקשורה לצריכה מינימלית של משאבי מחשוב.