一個函數(shù)在編譯時被分配一個入口地址,這個入口地址就稱為函數(shù)的指針。
函數(shù)名代表函數(shù)的入口地址,這一點和數(shù)組一樣。我們可以用一個指針變量來存放這個入口地址,然后通過該指針變量調(diào)用函數(shù)。如:假設有一個求兩者較大的函數(shù)如下:
int max(int x, int y);
當我們調(diào)用這個函數(shù)時可以這樣:
int?c; c?max(a,b);
這是通常調(diào)用方法,其實我們可以定義一個函數(shù)指針,通過指針來調(diào)用,如:
int?(*p)(a,b);
有些朋友可能對(*p)()不大理解,其實它的意思就是定義一個指向函數(shù)的指針變量p,p不是固定指向哪個函數(shù)的,而是專門用來存放函數(shù)入口地址的變量。在程序中把哪個函數(shù)入口地址賦給它,它就指向哪個函數(shù)。但是注意,p不能像指向變量的指針變量一樣進行p++p--等無意義的操作。
既然p是一個指針變量,那么久可以作為函數(shù)的參數(shù)進行傳遞。其實函數(shù)的指針變量最常用的用途之一就是作為函數(shù)參數(shù)傳遞到其它函數(shù)。這也是c語言中應用的比較深入的部分了。