שימוש במצביעיםמדוע נרצה להשתמש בכלל במצביעים? נביט בדוגמא הבאה: void swap(int x, int y) נרצה שעל המסך יודפס בתחילה 5 10, ולאחר מכן יודפס 10 5. בפועל זהו לא המצב. בשני המקרים, גם אחרי וגם לפני הקריאה לפונקציה swap(), יודפס 5 10. הסיבה: אל הפונקציה swap() לא העברנו ממש את המשתנים x, y, אלא את הערכים שלהם, כלומר את המספרים 5,10. swap() שמה מספרים אלו במשתנים המקומיים שלה, והחליפה ביניהם. לעומת זאת, המשתנים x, y של main() נשארו ללא שינוי. כיצד נפתור את הבעיה הזו, ונשנה באמת את המשתנים של main() בתוך הפונקציה swap()? התשובה: בעזרת מצביעים. במקום להעביר לפונקציה swap() את המספרים 5, 10, נעביר אליה את הכתובת של המשתנה x של main(), ואת הכתובת של המשתנה y של main(). בעזרת כתובות אלו, הפונקציה swap() תיגש ישר אל התאים בזיכרון בהם שמורים המשתנים x, y של main() ותשנה את התוכן של תאים אלו. נשנה את התוכנית הקודמת על מנת שבאמת יוחלף התוכן של המשתנים x, y של main(): void swap(int *x, int *y)
אין תגובות!
|
תוכן העניינים:
קישורים רלוונטיים:שיתוף: |