יום ראשון, 26 בפברואר 2017

שפת C - מצביע לפונקציה, qsort , bsearch ומשתנה const

מצביע לפונקציה

כפי שאפשר ליצור מצביע לכתובת בזיכרון של משתנה, כך אפשר גם ליצור מצביע לפונקציה בקוד שלנו.
-מצביע לפונקציה יכול להצביע רק על פונקציות שיש להן את אותם ארגומנטים ואת אותו סוג ערך מוחזר.
-אפשר להשתמש במצביע לפונקציה בדיוק כמו בפונקציה שהוא מצביע עליה.
-שם של פונקציה הוא מצביע בעצמו.

מבנה כללי:

     ; (הארגומנטים שהפונקציה מקבלת)   (שם_המצביע *)   סוג הערך שהפונקציה מחזירה


לדוגמה אם יש פונקציה בשם "F":
double F(int a, int b, char c) { ...... }

אז כדי שמצביע "p" יוכל להצביע עליה, צריך להגדיר אותו כך:
double (*p) (int a, int b, char c);

ואז נוכל להכניס אליו את הכתובת של הפונקציה:
p = F ;
-שימו לב שבניגוד למשתנים, כאן לא צריך את התו &. משום ששם פונקציה הוא מצביע בעצמו.