שיעור 21: מצביעים לפונקציות
לא רק משתנים גרים בזיכרון — גם קוד של פונקציות, ולכן גם לפונקציות יש כתובות. מצביע לפונקציה שומר כתובת כזו: int (*op)(int, int); — והסוגריים סביב (*op) קריטיים, בלעדיהם זו הצהרה אחרת לגמרי. אחרי op = add; אפשר לקרוא op(3, 4) בדיוק כמו לפונקציה רגילה, ובהשמה אחת להחליף את ההתנהגות ל-mul. הכו
מצביע לפונקציה הוא כפתור חיוג מהיר בטלפון: הכפתור עצמו לא יודע לדבר, הוא רק שומר 'למי להתקשר'. אפשר להקצות לו את אמא או את הפיצרייה — לחיצה (קריאה) תפעיל את מי ששמור שם כרגע.
- מצביע לפונקציה
- משתנה ששומר כתובת של פונקציה — אפשר לקרוא דרכו ולשנות למי הוא מצביע.
- אנטומיית ההצהרה int (*op)(int, int);
- op הוא מצביע לפונקציה שמקבלת שני int ומחזירה int. הסוגריים סביב (*op) הם החלק הקריטי.
- שם פונקציה ככתובת
- שם פונקציה בלי סוגריים (כמו add) הוא הכתובת שלה — לכן op = add; עובד.
- callback (פונקציית החזרה)
- פונקציה שמעבירים כמצביע לפונקציה אחרת, כדי שתפעיל אותה ברגע הנכון.
- המשווה של qsort
- qsort מקבלת מצביע לפונקציית השוואה — כך היא יודעת למיין כל טיפוס שהוא.