函式指標與指標函式

2021-05-22 16:09:39 字數 1509 閱讀 4219

指標函式

指標函式是指函式的返回值型別是乙個指標型別,即本質是乙個函式。

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

返回型別識別符號*返回名稱(形式參數列)

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

#include

float *find(float(*pionter)[4],int n);

main()

,,};

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

float *find(float(*pionter)[4],int n)/*定義指標函式*/

函式指標是指向函式的指標變數。

因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。如前所述,c在編譯時,每乙個函式都有乙個入口位址,該入口位址就是函式指標所指向的位址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上是一致的。函式指標有兩個用途:呼叫函式和做函式的引數。函式指標的宣告方法為:

資料型別標誌符(指標變數名) (形參列表);

注1:「函式型別」說明函式的返回型別,由於「()」的優先順序高於「*」,所以指標變數名外的括號必不可少,後面的「形參列表」表示指標變數指向的函式所帶的引數列表。例如:

int func(int x); /* 宣告乙個函式*/

int (*f) (int x); /* 宣告乙個函式指標*/

f=func; /* 將func函式的首位址賦給指標f */

賦值時函式func不帶括號,也不帶引數,由於func代表函式的首位址,因此經過賦值以後,指標f就指向函式func(x)的**的首位址。

注2:函式括號中的形參可有可無,視情況而定。

下面的程式說明了函式指標呼叫函式的方法:

例一、#include

int max(int x,int y)

void main()

注意,指向函式的指標變數沒有++--運算,用時要小心

函式指標與指標函式

函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...

函式指標與指標函式

函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...

函式指標與指標函式

1 返回指標的函式 指標函式 指標函式,就是返回指標的函式,函式可以不返回任何值,也可以返回整型值,實型值,字元型值,當然也可以返回指標值。乙個指標函式的宣告 int f int i,int j 由於 的優先順序高於 因此f先與 結合,所以f是乙個具有兩個int型引數,返回乙個指向int型指標的函式...