指針函式

指針函式,指針函式是指帶指針的函式,即本質是一個函式。函式都有返回類型(如果不返回值,則為無值型),只不過指針函式返回類型是某一類型的指針。事實上,每一個函式,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當於一個指針。學生學號從0號算起,函式find()被定義為指針函式,起形參pointer是指針指向包含4個元素的一維數組的指針變數。pt是一個指針變數,它指向浮點型變數。main()函式中調用find()函式,將score數組的首地址傳給pointer.函式指針有兩個用途:調用函式和做函式的參數.

基本內容

指針函式是指帶指針的函式,即本質是一個函式。

我們知道函式都有返回類型(如果不返回值,則為無值型),只不過指針函式返回類型是某一類型的指針。其定義格式如下所示:

返回類型標識符 *返回名稱(形式參數表)

{ 函式體 }

返回類型可以是任何基本類型和複合類型。返回指針的函式的用途十分廣泛。事實上,每一個函式,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當於一個指針。比如函式返回一個整型值,實際上也相當於返回一個指針變數的值,不過這時的變數是函式本身而已,而整個函式相當於一個“變數”。例如下面一個返回指針函式的例子:

#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);

函式指針聲明為指針,它與變數指針不同之處是,它不是指向變數,而是指向函式。

函式指針有兩個用途:調用函式和做函式的參數.

相關詞條

相關搜尋

熱門詞條

聯絡我們