指標函式的概念

2021-07-07 02:54:57 字數 1803 閱讀 9974

指標函式

指標函式是指帶指標的函式,即本質是乙個函式。

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

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

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

#include 

float *find();

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

for(i=0;i<4;i++)

printf("%5.2f\t",*(p+i));

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

學生學號從0號算起,函式find()被定義為指標函式,起形參pointer是指標指向包含4個元素的一維陣列的指標變數。pointer+1指向score的第一行。*(pointer+1)指向第一行的第0個元素。pt是乙個指標變數,它指向浮點型變數。main()函式中呼叫find()函式,將score陣列的首位址傳給pointer. 

【注意】

指標函式不同於函式指標, int (*f)(int a);或者char (*f1)(void);

函式指標宣告為指標,它與變數指標不同之處是,它不是指向變數,而是指向函式。 

函式指標有兩個用途:呼叫函式和做函式的引數.

指向函式的指標:指向函式的指標變數

函式的指標是指函式的入口位址,和陣列名代表陣列的首位址一樣,函式名代表函式的入口位址。 

若有乙個指標變數,存放某乙個函式的入口位址,我們可以通過指向這個函式的指標變數來呼叫函式。 

1.定義指向函式的指標變數 

形式如下: 

型別識別符號(*變數識別符號)(); 

型別識別符號是指標變數所指向的函式型別,變數識別符號是指向函式的指標變數名。 

例如: 

int(*p)();

定義了乙個指向函式的指標變數p,它可以存放一類整型函式的入口位址,程式中把哪乙個函式的入口位址賦給它,它就指向哪乙個函式。 

說明: 

(1)定義指向函式的指標變數,可以指向一類函式。 

(2)定義指向函式的指標變數時,括號不能省略。 

形式int*p()定義的是指標函式頭,返回值是指向整型資料的指標值,而不是指向函式的指標變數。

(3)對指向函式的指標變數p,p+i、p++、p--等運算無意義。 

2.讓指標變數指向函式 

定義了指向函式的指標變數,就可以在指標變數與特定函式之間建立關聯,讓指標變數指向特定函式。 

建立關聯的方法為: 

指標變數一函式名; 

說明: 

(1)指標變數只能指向定義時所指定的一類函式。 

(2)乙個指標變數可以先後指向多個不同的函式。

3.利用指標實現函式呼叫 

指標變數一旦指向某函式,利用指標所指向的變數可以實現函式呼叫。 

一般形式: 

(*指標變數)(實參表);

函式指標和指標函式的基本概念

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

函式指標和指標函式的基本概念

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

指標的概念

第一章。指標的概念 指標是乙個特殊的變數,它裡面儲存的數值被解釋成為記憶體裡的乙個位址。要搞清乙個指標需要搞清指標的四方面的內容 指標的型別,指標所指向的型別,指標的值或者叫指標所指向的記憶體區,還有指標本身所佔據的記憶體區。讓我們分別說明。先宣告幾個指標放著做例子 例一 1 int ptr 2 c...