函式指標做函式引數

2021-07-04 23:11:21 字數 820 閱讀 3029

函式指標是指向函式的指標變數,即本質是乙個指標變數。

int (*f) (int x); /*

宣告乙個函式指標*/

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

指向函式的指標包含了函式的位址,可以通過它來呼叫函式。宣告格式如下:

型別說明符(*函式名)(引數

)其實這裡不能稱為函式名,應該叫做指標的變數名。這個特殊的指標指向乙個返回整型值的函式。指標的宣告必須和它指向函式的宣告保持一致。

指標名和指標運算子外面的括號改變了預設的運算子優先順序。如果沒有圓括號,就變成了乙個返回整型指標的函式的原型宣告。

例如:void (*fptr)();

fptr=&function;

fptr=function;

取位址運算子&不是必需的,因為單單乙個函式識別符號就標號表示了它的位址,如果是函式呼叫,還必須包含乙個圓括號括起來的參數列。

可以採用如下兩種方式來通過指標呼叫函式:

x=(*fptr)();

x=fptr();

第二種格式看上去和函式呼叫無異。但是有些程式設計師傾向於使用第一種格式,因為它明確指出是通過指標而非函式名來呼叫函式的。下面舉乙個例子:

void (*funcp)();

void filefunc(),editfunc();

main()

void filefunc()

void editfunc()

程式輸出為:

filefunc

editfunc

主要的區別是乙個是指標變數,乙個是函式。在使用是必要要搞清楚才能正確使用

請看鏈結

函式指標 函式指標做函式引數

陣列型別如何定義 typedef int myarray 5 這是我定義的陣列型別,這個型別的名字是myarray,它的本質是乙個記憶體固定大小模板 myarray arr arr是乙個陣列 大小為5 型別的變數。可以這樣訪問arr 0 arr 1 arr 2 typedef int myp 5 定...

函式指標做函式引數

define crt secure no warnings include include include int myadd int a,int b 子任務的實現者 int myadd2 int a,int b 子任務的實現者 int myadd3 int a,int b 子任務的實現者 int ...

指標做函式引數

程式1 void main void mymalloc char s 我想在函式中分配記憶體,再返回 mymalloc p 的執行過程 分配乙個臨時變數char s,s的值等於p,也就是null,但是s占用的是與p不同的記憶體空間。此後函式的執行與p一點關係都沒有了!只是用p的值來初始化s。然後s ...