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