עבור לתוכן

בעיה בC - הליך ופוינטר.

Featured Replies

פורסם

יש לי הליך כזה:


void delstr(char *pstr,int delnum)
{
char *tmpstr;
...
free(pstr);
pstr=tmpstr;
}

ההליך

delstr

מקבל מצביע לתו ושלם.

לא משנה עכשיו מה זה עושה בפנים, מה שבפנים עובד חלק.

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

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

אבל מה, למשהו זה לא מקבל את זה. הפוינטר pstr לא מתנהג אחרי זה בתוכנית כאילו הוא קיבל את הכתובת של התא אליו מפנה TMPSTR.

(במהלך main יש

delstr(pstr,2);

יש לציין שאם אני מנסה לעבוד עם PSTR בתוך ההליך ולא בMAIN, אז הוא עובד אחרי ההשמה כאילו היא באמת בוצעה... מה קורה פה? :s05: :s07:

פורסם

אתה צריך להעביר ל-delstr את הכתובת שבה מוחזק המצביע (כלומר &pstr) ושהפונקציה תקבל מצביע למצביע (והקוד שלה יהיה בהתאם)

שינוי של pstr בתוך הפונקציה לא משפיע על המשתנה בחוץ.

פורסם
  • מחבר

תודה רבה! :)

פורסם

פתרון נכון יותר יהיה שהפונקציה תחזיר בסוף את המצביע החדש (return tmpstr) ובקריאה להציב את הערך לתוך המבציע (pstr = delstr(pstr,2)

פורסם
  • מחבר

ככה עשיתי כבר שלא ידעתי מה לעשות עם הבעיה, אבל עדיין זה הציק לי בראש

פורסם

אתה צריך לקבל את הפויינטר כ**(פוינטר לפוינטר)

כשאתה שולח אותו, אתה שולח את המקום של הפויינטר בזיכרון(מסובך הא) p&

פורסם

Ghosthunter - התגובה שלך שונה מהתגובה הראשונה שלי ב?

פורסם

אמרתי לו מה צריך לרשום הגדרה של הפונ.

ארכיון

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

דיונים חדשים