基本內容
指針函式是指帶指針的函式,即本質是一個函式。
我們知道函式都有返回類型(如果不返回值,則為無值型),只不過指針函式返回類型是某一類型的指針。其定義格式如下所示:
返回類型標識符 *返回名稱(形式參數表)
{ 函式體 }
返回類型可以是任何基本類型和複合類型。返回指針的函式的用途十分廣泛。事實上,每一個函式,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當於一個指針。比如函式返回一個整型值,實際上也相當於返回一個指針變數的值,不過這時的變數是函式本身而已,而整個函式相當於一個“變數”。例如下面一個返回指針函式的例子:
#include
float *find();
main()
{
static float score[]={{60,70,80,90},{56,89,34,45},{34,23,56,45}};
float *p;
int i,m;
printf("Enter the number to be found:");
scanf("%d",&m);
printf("the score of NO.%d are:\n",m);
p=find(score,m);
for(i=0;i<4;i++)
printf("%5.2f\t",*(p+i));
}
float *find(float(*pionter),int n)/*定義指針函式*/
{
float *pt;
pt=*(pionter+n);
return(pt);
}
學生學號從0號算起,函式find()被定義為指針函式,起形參pointer是指針指向包含4個元素的一維數組的指針變數。pointer+1指向score的第一行。*(pointer+1)指向第一行的第0個元素。pt是一個指針變數,它指向浮點型變數。main()函式中調用find()函式,將score數組的首地址傳給pointer.
【注意】
指針函式不同於函式指針, int (*f)(int a);或者char (*f1)(void);
函式指針聲明為指針,它與變數指針不同之處是,它不是指向變數,而是指向函式。
函式指針有兩個用途:調用函式和做函式的參數.