עזרה בסיום

mr small

New member
עזרה בסיום

שלום לכולם, נתנו לי את השאלה הבאה: א. כתוב פונקציה([] void p1(int arr[], int size, int *pointers המקבלת מערך של מס' שלמים, את הגודל ומערך של מצביעים המצביעים בצורה ממויינת (מיון בועות) על מערך השלמים. ב.יש לכתוב פונקציה נוספת (void p2(int arr[], int size, int **&pointers הפעם הפונקציה צריכה להקצות ולהחזיר כפרמטר פלט מערך של מצביעים שמצביעים על איברי המערך בצורה ממוינת מהקטן לגדול. כתבתי את שתי הפונקציות וזה עובד. סעיף ג' בשאלה הוא : מהם הם היתרונות והחסרונות של כ"א מהפונקציות הנ"ל אל מול הפונקציה השנייה.... כאן אני זקוק לעזרתכם.... תודה מראש.
 

אלדד28

New member
תחשוב על כיוונים של

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

mr small

New member
גם בהקשר

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

אלדד28

New member
לא מדויק

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

mr small

New member
לפי מה שאתה אומר

יותר טוב שאני מקצה מחוץ לפונקציה שכן אחרת הפונקציה מקצה והתוכנית צריכה לשחרר?
 
למעלה