15-02-2009, 12:21
|
|
|
|
חבר מתאריך: 21.12.04
הודעות: 30,021
|
|
בדיוק.
שוש, שימי לב למה שהפונקציה מוגדרת לקבל. אם היא מוגדרת לקבל מצביע (בתאכלס המשמעות של זה היא "כתובת של משתנה"), אז את צריכה לשלוח לה כתובת. זה לא משנה אם את שולחת לה מצביע אמיתי (המחזיק כתובת של משתנה אחר) או את הכתובת עצמה של המשתנה (ע"י שימוש ב &). כל עוד הכתובת של המשתנה עוברת לפונקציה, זה בסדר.
הדוגמא של Dragonion מבהירה את זה בצורה מצויינת. את יכולה לראות שהוא יכול פשוט לשלוח מצביע, או לשלוח כתובת של משתנה שאינו מצביע.
הבעיה עם הדוגמא שלו היא שאת לא יכולה להגיד למצביע שרק נוצר, שהערך במקום אליו הוא מצביע שווה למשהו (כיוון שאת לא יודעת לאן הוא מצביע.. יש בפנים זבל.. אולי זה מתפרש כמקום בזיכרון שכבר תפוס?).
קוד PHP:
int x = 2; int *y; y = &x; *y = 3;
power (&x); power (y);
עכשיו זה בסדר
|