עבור לתוכן

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

Featured Replies

פורסם

זה לא נותן לי לכתוב פה את הקוד זה מעביר אותי להודעה לפנות לאדמין

[TABLE]

[TR]

[TD]Dear surfer,

The request you just sent was invalid,

Please contact your website administrator for more information.

Best regards,

sPD.co.il Administration[/TD]

[/TR]

[/TABLE]

נקווה שתבינו ככה מה עשיתי:

הפוקנציה היא מטיפוס int* והיא מקבל מערך

מוסיפה לכל הערכים 1 ומחזירה את המערך :

return newarray

אחרי זה אני מגדיר עוד מצביע מטיפוס int ועושה שהוא שווה לפונקציה ואז לולאת for שמציגה pointer

כשהערכים של המערך הם 1'2'3'4'5

והתוצאה היא שהפלט הוא: 2,-8546556,עוד מספרים לא קשורים

פורסם

תדביק את הקוד באתר חיצוני כמו pastebin.

לשאלתך, הפונקציה אמורה לשנות את המערך הקיים, או ליצור מערך חדש ולהחזיר אותו?

פורסם
  • מחבר

ליצור מערך חדש ולהחזיר אותו

http://pastebin.com/RVQyHakC

חחח מהשאלה שלך הבנתי את הבעיה והסתדרתי בערך יש דרך יותר טובה מלהפוך את המערך לגלובלי?

פורסם

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

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

א. להקצות מערך חדש בתוך הפונקציה (באמצעות new/malloc) ולהחזיר אותו. אז מי שקרא לפונקציה צריך לדאוג לשחרר את המערך (ע"י delete/free) בסיום השימוש.

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

פורסם
  • מחבר

אפשר הסבר איך אני מבצע את מה שכתבת בא'

פורסם

חיפוש בגוגל יעלה לך המון תוצאת לגבי הקצאת זיכרון עם malloc. המילה השמורה new קשורה ל- ++C

פורסם
  • מחבר

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

פורסם

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

פורסם
  • מחבר

תודה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים