指向函式的指標。本質是乙個指標。
指標變數可以指向變數的位址、陣列、字串、動態分配位址,同時也可指向乙個函式,每個函式在編譯的時候,系統會分配給該函式乙個入口位址,函式名表示這個入口位址,那麼指向函式的指標變數稱為函式指標變數。
引論: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 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...