指針函式

指針函式

指針函式是一個函式。函式都有返回類型(如果不返回值,則為無值型),只不過指針函式返回類型是某一類型的指針。

基本介紹

  • 中文名:指針函式
  • 外文名:Pointer function
  • 性質:函式
  • 領域:數學/計算機
定義,定義格式,注意,

定義

首先它是一個函式,只不過這個函式的返回值是一個地址值。函式返回值必須用同類型的指針變數來接受,也就是說,指針函式一定有“函式返回值”,而且,在主調函式中,函式返回值必須賦給同類型的指針變數

定義格式

類型名 *函式名(函式參數列表);
其中,後綴運算符括弧“()”表示這是一個函式,其前綴運算符星號“*”表示此函式為指針型函式,其函式值為指針,即它帶回來的值的類型為指針,當調用這個函式後,將得到一個“指向返回值為…的指針(地址),“類型名”表示函式返回的指針指向的類型”。
“(函式參數列表)”中的括弧為函式調用運算符,在調用語句中,即使函式不帶參數,其參數表的一對括弧也不能省略。其示例如下:
int *pfun(int, int);
由於“*”的優先權低於“()”的優先權,因而pfun首先和後面的“()”結合,也就意味著,pfun是一個函式。即:
int *(pfun(int, int));
接著再和前面的“*”結合,說明這個函式的返回值是一個指針。由於前面還有一個int,也就是說,pfun是一個返回值為整型指針的函式。
返回類型可以是任何基本類型和複合類型。返回指針的函式的用途十分廣泛。事實上,每一個函式,即使它不帶有返回某種類型的指針,它本身都有一個入口地址,該地址相當於一個指針。比如函式返回一個整型值,實際上也相當於返回一個指針變數的值,不過這時的變數是函式本身而已,而整個函式相當於一個“變數”。例如下面一個返回指針函式的例子:
#include <stdio.h> float *find(float(*pionter)[4],int n);//函式聲明 int main(void) {     static float score[][4]={{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-1);     for(i=0;i<4;i++)         printf("%5.2f\t",*(p+i));      return 0; }float *find(float(*pionter)[4],int n)/*定義指針函式*/ {     float *pt;     pt=*(pionter+n);     return(pt); }
共有三個學生的成績,函式find()被定義為指針函式,其形參pointer是指針指向包含4個元素的一維數組指針變數。pointer+n指向score的第n+1行。*(pointer+1)指向第一行的第0個元素。pt是一個指針變數,它指向浮點型變數。main()函式中調用find()函式,將score數組的首地址傳給pointer.

注意

指針函式不同於函式指針, int (*f)(int a);或者char (*f1)(void);
函式指針聲明為指針,它與變數指針不同之處是,它不是指向變數,而是指向函式。所以一定要注意
函式指針有兩個用途:調用函式和做函式的參數.

相關詞條

熱門詞條

聯絡我們