פורסם 2005 בינואר 1020 שנים יש לי הליך כזה: void delstr(char *pstr,int delnum){ char *tmpstr; ... free(pstr); pstr=tmpstr;} ההליך delstr מקבל מצביע לתו ושלם. לא משנה עכשיו מה זה עושה בפנים, מה שבפנים עובד חלק. אז אני משחרר את הזיכרון שאליו מופנה הפוינטר שקיבלנו בתחילת ההליך. אז בסוף אני רוצה שהפוינטר שקיבלנו בהליך יקבל את הכתובת שאליו מצביע הפוינטר שיצרנו במהלך ההליך (ועשיתי איתו שם כל מיני דברים) אבל מה, למשהו זה לא מקבל את זה. הפוינטר pstr לא מתנהג אחרי זה בתוכנית כאילו הוא קיבל את הכתובת של התא אליו מפנה TMPSTR. (במהלך main יש delstr(pstr,2); יש לציין שאם אני מנסה לעבוד עם PSTR בתוך ההליך ולא בMAIN, אז הוא עובד אחרי ההשמה כאילו היא באמת בוצעה... מה קורה פה? :s05:
פורסם 2005 בינואר 1020 שנים אתה צריך להעביר ל-delstr את הכתובת שבה מוחזק המצביע (כלומר &pstr) ושהפונקציה תקבל מצביע למצביע (והקוד שלה יהיה בהתאם)שינוי של pstr בתוך הפונקציה לא משפיע על המשתנה בחוץ.
פורסם 2005 בינואר 1020 שנים פתרון נכון יותר יהיה שהפונקציה תחזיר בסוף את המצביע החדש (return tmpstr) ובקריאה להציב את הערך לתוך המבציע (pstr = delstr(pstr,2)
פורסם 2005 בינואר 1020 שנים מחבר ככה עשיתי כבר שלא ידעתי מה לעשות עם הבעיה, אבל עדיין זה הציק לי בראש
פורסם 2005 בינואר 1120 שנים אתה צריך לקבל את הפויינטר כ**(פוינטר לפוינטר)כשאתה שולח אותו, אתה שולח את המקום של הפויינטר בזיכרון(מסובך הא) p&
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.