שיעור 10: העברה לפי ערך ו-scope
בשיעור הקודם למדנו להעביר ערכים לפונקציה — אבל מה הפונקציה מקבלת באמת? ב-C כל ארגומנט מועבר לפי ערך: הפונקציה מקבלת עותק, ושינוי של העותק לא נוגע במקור. לכן פונקציית swap 'תמימה' שמחליפה את הפרמטרים שלה משאירה את המשתנים של הקורא בדיוק כפי שהיו. נכיר גם scope: משתנה מקומי נולד בכניסה לבלוק ומת ביציא
להעביר משתנה לפונקציה זה כמו לשלוח צילום של מסמך: מי שמקבל את הצילום יכול לשרבט עליו כמה שירצה — המסמך המקורי שלך נשאר נקי לגמרי.
- העברה לפי ערך
- שיטת ההעברה של C: הפונקציה מקבלת עותק של הערך, לא את המשתנה עצמו.
- עותק
- הערך שנכנס לפרמטר בקריאה. שינוי שלו לא משפיע על משתנה הקורא.
- תחום הכרה (scope)
- האזור בקוד שבו משתנה קיים ונגיש — בדרך כלל הבלוק שבו הוגדר.
- משתנה מקומי
- משתנה שמוגדר בתוך פונקציה או בלוק: נולד בכניסה לבלוק ומת ביציאה ממנו.
- משתנה גלובלי
- משתנה שמוגדר מחוץ לכל פונקציה ונגיש מכולן. קיים, אבל מומלץ להימנע — קשה לעקוב מי משנה אותו.