函式指標與指標函式

2022-08-09 00:09:20 字數 1580 閱讀 6474

指向函式的指標。本質是乙個指標。

指標變數可以指向變數的位址、陣列、字串、動態分配位址,同時也可指向乙個函式,每個函式在編譯的時候,系統會分配給該函式乙個入口位址,函式名表示這個入口位址,那麼指向函式的指標變數稱為函式指標變數。

引論:

int sumup(int a, float b);

int (*p3) (int a, float b); //加入p3=&sumup;則p3作為指標指向sumup。這就是p3指標指向函式

【回顧:兩者的返回值和形參都是 int (int a, float b);】

int* (*p4)(int a, float b);

從型別上看,int* (int a, float b) 是上式函式的指標。故有:p4 = &p3;

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

//可以通過以下兩種方式將func函式的首位址賦給指標p

p=func; 

p=&func;

取位址運算子&不是必需的,因為單單乙個函式識別符號就標號表示了它的位址,如果是函式呼叫,還必須包含乙個圓括號括起來的參數列。可以採用如下兩種方式來通過指標呼叫函式:

x=(*p)();

x=p();    //雖然看起來和普通的呼叫無異,但是有些程式設計師傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的

如使用引論中的例子有如下的呼叫:

sumup (100,1.21);

(*p3) (100,1.21); //與上等價

*(p4) (100,1.21); //與上等價

示例程式:

void (*funcp)();

void filefunc(),editfunc();

main()

void filefunc()

void editfunc()

程式輸出為:

filefunc

editfunc

指帶指標的函式,即本質是乙個函式函式返回的型別某一型別的指標,即返回乙個位址給呼叫函式,以用於需要指標或者位址的表示式中

型別識別符號  *函式名(參數列)

如:宣告:int * f(x);

int *p;

呼叫:p=f(a);

int * getdate(int wk,int dy)    //返回某元素的位址

,          ,

,             

,              

}; return &calendar[wk-1][dy-1];  

}       

main()

while(wk<1 || wk>5 || dy<1 || dy>7);

printf(%d\n,*getdate(wk,dy));

}

函式指標與指標函式

指標函式 指標函式是指函式的返回值型別是乙個指標型別,即本質是乙個函式。我們知道函式都有返回型別 如果不返回值,則為無值型 只不過指標函式返回型別是某一型別的指標。其定義格式如下所示 返回型別識別符號 返回名稱 形式參數列 返回型別可以是任何基本型別和復合型別。返回指標的函式的用途十分廣泛。事實上,...

函式指標與指標函式

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

函式指標與指標函式

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