נשלח בתאריך: 20 September 2011 בשעה 13:40 | | IP רשוּם
|
|
|
|
אז ככה,
רציתי לשאול נניח ובהינתן רשימה מקושרת.
ומסתבר שאני צריך למחוק את האיבר האחרון ברשימה.
ואז אני אומר אם temp שזה פוינטר כלשהו שאני צריך למחוק אליו הוא בעצם פוינטר סוף הרשימה (שווה ל-end)
ומתקיים ש-prev->next == temp (הכוונה עם prev עשיתי איטרציה לפוינטר שאותו אני צריך למחוק).
אז ברגע שאני עושה free(temp) לאן ה-end מצביע, ובכללי השאלה היא מה קורה אם שני פוינטרים מצביעים למיקום שבו עושים "שחרור" לאן הם מצביעים לאחר מכן?
כך ושאלה שניה שיש לי.
נתונים לדוגמא.
struct something *a[3];
struct some thing a2 [3]
ונניח אני מאכסן כתובת של כל מערך:
a = &a2[i
רציתי לשאול, נוצר מצב שבו אני יכול לא להשתמש במערך המצביעים למבנים וישר לקבל ערך אחד ולקדם אותו כל פעם. כי a2 מסודר בסדר על פי הכתובות.
לדוגמא:
struct something * ptr;
ptr = a[0]
ptr = ptr + 1
ptr - >id = 3
רציתי לשאול אם הדבר הזה יעבוד בכל צורה? שימו לב עברתי לא על פי המערך מצביעים אלא על פי המערך הרגיל. תודה !
אה ועוד משהו קטן, אם אני מעביר מצביע לקובץ *FILE לפונקציה ומשנה שם את הסמן האם זה משתנה בתוכנית הכללית? וכיצד עובדת העברת FILE לפונקציה?
|