اشاره گر به تابع
وقتی تابع کامپايل شده و در حافظه برای اجرا قرار می گيرد قسمتی از حافظه را اشغال می کند بنابراين دارای آدرس است که می توان آن را به اشاره گری اختصاص داد. اشاره گر به تابع راهی برای فراخوانی تابع به صورت غيرمستقيم است علاوه بر اين برای ارسال تابع به عنوان پارامتر به تابع دیگر هم بکار می آيد.

اعلان و استفاده اشاره گر به تابع درنظر اول کمی متفاوت است ولی از همان قاعده تبعيت می کند. برای اعلان اشاره گر به تابع نام تابع درون پرانتز قرار می گيرد و قبل از آن علامت * قرار می گيرد. مشابه زير:

datatype (*pointerToFunction) (pElement) = NULL ;

*pointerToFunxtion اشاره گر به تابع است که درون پرانتز بايد باشد. سمت چپ آن نوع برگشتی و سمت راست آن پارامترهای تابع قرار می گيرند. سپس با NULL مقداردهی می شود.

مثال. funcPtr اشاره گر به تابعی است که هيچ آرگومان و مقدار برگشتی ندارد.

void (*funcPtr)() = NULL ;

مشابه آرايه ها، برای بدست آوردن آدرس تابع نيازی به عملگر آدرس & نيست. فراخوانی تابع توسط اشاره گر مشابه فراخوانی عادی تابع است.

مثال. متغير p اشاره گری به تابع square است. تابع به دو طريق فراخوانی شده است که خروجی هر دو فراخوانی يکسان است.

#include <iostream.h>
double square(double x); // The function prototype.
double (*p)(double x) = NULL; // The pointer declaration.
main() {
   p = square; // Initialize p to point to square().
   Cout << square(6) << p(6));
   return(0);
}
double square(double x) {
return x * x;
}