החזר מערך מהפונקציה C ++

Return Array From Function C



מערכים הם מכלים ספציפיים שיש להם ערכים מאותו סוג נתונים. פונקציות ב- C ++ מבצעות פעולות במערכים, ואז מערכים אלה מוחזרים לפונקציה הראשית. ישנן גישות רבות לתאר תופעה זו. במדריך זה מוסברים כמה שיטות נפוצות:

השתמש במצביעים להחזרת המערך הסטטי

כאשר אנו משתמשים במערך רגיל, יש סיכוי שיהיו לנו תוצאות חריגות כלשהן. כדי להימנע מכך, אנו משתמשים במערך סטטי בקוד C ++ שלנו. הבה נבין את הדוגמה בה השתמשנו. בפונקציה זו הכרזנו מערך בעל 5 ערכים כסוג ההחזרה כפי שהוזכר כאן.







פונקציית Int *()



מכיוון שהערך יהיה מסוג שלם, כך הוא מתויג כ- int בדוגמה להלן. כפי שהצגנו את הפונקציה כמצביע, הפונקציה תהיה מסוג מצביע. לאחר הזנת הערכים, מערך מוחזר לתוכנית הראשית.







בתוכנית הראשית, ביצענו שיחת פונקציה. כדי לקבל את הערך המוחזר מהפונקציה, נשתמש במשתנה שלם. כאשר המערך מוחזר, אנו יכולים לגשת לערכיו בקלות. הערכים יודפסו באופן ידני.

Int*מַצבִּיעַ=פוּנקצִיָה();

מטרת המצביע היא לאתר את הפריט הנמצא באינדקס אחד של המערך. במילים אחרות, הוא מציג את כתובת הערך במערך. לאחר מכן, אנו משתמשים באב טיפוס פונקציה שיחזיר את המצביע.



כדי לראות את פלט המערך המוחזר באמצעות הפונקציה, עלינו לקבל גישה למסוף אובונטו במקרה של לינוקס. הסיבה לכך היא שהפלט נגיש דרך מסוף לינוקס. ב- Linux, אנו זקוקים למהדר להפעלת קודי C ++ שנכתבו בכל עורך טקסט. אוסף זה מתבצע באמצעות G ++. ה- -o משמש לאחסון הפלט בקובץ. כאן, אנו זקוקים לקובץ הפלט וקובץ קוד המקור. לאחר האוסף, נבצע את הקוד:

$g ++ -אוֹfile1 file1.c
$./קובץ 1

מהפלט, אנו יכולים לראות את המערך, שהאתחל בפונקציה, מוצג בפונקציה הראשית על ידי שימוש במערך סטטי, מאתחל ידנית ודרך המצביעים.

החזר מערך מוקצה באופן דינמי באמצעות מצביעים

ניתן להחזיר מערכים באמצעות הקצאה דינאמית. ניתן להקצות מערכים באופן דינמי באמצעות המילה חדש. הם יישארו שם עד שנמחק אותם בעצמנו. מערכים סטטיים קבועים בגודלם, כלומר עליך לספק גודל במהלך האתחול. לאחר יצירת המערך, קשה להגדיל את הגודל בזמן הריצה או להלן. אך במקרה של המערך הדינמי, אנו יכולים להוסיף פריטים נוספים מתי שנרצה מכיוון שהוא מתרחב כאשר אנו מזינים בו ערכים. אז אנחנו לא צריכים לציין או לזהות כל גודל.

נע לעבר הדוגמה בה השתמשנו כאן. השתמשנו במערך דינאמי עם המצביעים כמו בדוגמאות הקודמות, שם השתמשנו במצביעים עם המערכים הסטטיים.

Int*פוּנקצִיָה()

לאחר הצהרת פונקציות, מערכים מוכרזים באופן דינמי:

Int*מַעֲרָך= חָדָשׁ int [100];

המונח, חדש, משמש כל הזמן ליצירת מערך דינאמי. נבצע פעולות במערך על ידי הזנת ערכים בו. לאחר מכן, המערך מוחזר לתוכנית הראשית:

עכשיו, שקול את הפונקציה העיקרית. ביצענו את שיחת הפונקציה. עם החזרת המערך, אנו מוסיפים משתנה מסוג שלם מצביע כדי לקבל את הערך.

Int*מַצבִּיעַ=פוּנקצִיָה();

הערכים שאוחסנו במערך מודפסים באופן ידני. הפלט מתקבל באמצעות שיטת האוסף והביצוע.

מערך החזרה באמצעות המבנים

מבנים הם המכולות כמו מערכים. אבל מערך מכיל את הערך של אותו סוג נתונים בכל פעם. ובמקרה של מבנים, הם מכילים יותר מערך סוג נתונים אחד. לקחנו מבנה בשם מדגם. כאן, הצהרת המערך נמצאת בתוך המבנים במקום פונקציות. סוג ההחזרה הוא שם המבנה. משתנה המבנה מוחזר לתוכנית הראשית. המבנה משתמש במילה struct להצהרה.

מדגם מבנה
{
Int arr[100];
};

לאחר הצהרת המבנה, השתמשנו בפונקציה שבה נוצר אובייקט מבנה. אובייקט זה ישמש לגישה למבנה. פונקציה זו תחזיר את אובייקט המבנה לפונקציה הראשית כך שנוכל להדפיס את המערך באמצעות אובייקט זה. משתנה יקבל את הערכים במשתנה. ערך זה הוא המספר השלם עד אליו נזין ערכים במערך. כמו בדוגמה זו, בחרנו 6 כמספר. אז, המספרים יוזנו עד 6 במערך.

מבנה פונקציה(intנ)

כעת, לקראת התוכנית הראשית, יצרנו אובייקט לגישה למערך באמצעות זה:

מדגם מבנה x;

לאחר אתחול האובייקט, מתווסף ערך למשתנה שאליו אנו רוצים שהמספרים יוכנסו למערך. בשיחת פונקציה נעביר את הערך בפרמטר:

איקס=פוּנקצִיָה(נ);

תהיה לנו את התצוגה באמצעות לולאת ה- for. הערכים מוצגים באמצעות האובייקט שהוכרז בתחילת התוכנית הראשית:

הפלט מציין כי 6 ערכים מוצגים בתוצאה מכיוון שהכנסנו 6 מספרים בתוכנית.

מערך החזרה באמצעות Std

C ++ משתמש בשיטות רבות להחזרת מערך מהפונקציה. אחד מהם הוא באמצעות std :: array. זו תבנית של מבנה. תכונה זו מספקת גם שתי פונקציות נוספות בגודל () וריק (). מוחזר שם מערך המציין כי המערך כולו מוחזר לתוכנית הראשית. כאן נוסיף מערך קבצי כותרות. בנוסף לספרייה, היא מכילה את כל הפונקציות של המערך.

#לִכלוֹל

מַעֲרָך<int,10>פוּנקצִיָה()

מכיוון שנוכל להחזיר את כל המערך עם שמו, כך בהצהרת הפונקציה נשתמש במערך כסוג החזרה. הנתונים מוזנים במערך. לאחר מכן, המערך יוחזר לתוכנית הראשית. במעבר לעבר הפונקציה הראשית, משתנה מערך יקבל את המערך כאשר הפונקציה נקראת.

arr=פוּנקצִיָה();

שוב, לולאה ישמש להצגת ערכי מערך. אנו רואים את הפלט מהתמונה המוצגת למטה. מכיוון שהשתמשנו ב -10 גדלים, 0 מספרים ייכנסו. מכאן, אלה מוצגים:

החזר מערך דרך מיכל וקטורי

גישה זו היא מערך שהוקצה באופן דינמי. כמו במקרה זה, אין צורך לציין את גודל המערך. אנחנו לא צריכים שום פרמטר גודל כאן. באמצעות דוגמה זו, עלינו להוסיף כותרת וקטורית בספרייה המכילה את הפונקציונליות של הווקטור.

נע לכיוון הפונקציה, כאשר סוג ההחזרה הוא גם וקטור int וגם מכיל מצביע וקטורי כארגומנט בפרמטר. מוצג כאן מערך עם השם temp:

וֶקטוֹר<int>MultiplyArrayByTwo(קבועוֶקטוֹר<int> *arr)

הפונקציה תכפיל את רכיבי המערך בשניים באמצעות הפונקציה tmp.push_back (). לאחר מכן, החזר את ה- tmp. משתנה מסוג אוטומטי יקבל את ערכי המערך מהפונקציה. המערך מכיל את הפריטים בו.

הפלט מראה את העבודה של מיכל הווקטור.

סיכום

במאמר הנ'ל, תיארנו את חמש השיטות הנפוצות ביותר להסברת הפונקציונליות של החזרת מערך מהפונקציה.