函式指標和指標函式經常是很多初學者感到疑惑的地方,其實這兩個是完全不同的概念。
指標函式
指標函式就是返回值為指標型別的函式。
函式指標
指標函式的概念其實挺簡單的,關鍵是函式指標,這個概念之前一直是我頭疼的地方,每次看函式指標都是一知半解。看函式指標的時候,出現的最多的是typedef和函式指標一起出現:
typedef return_type (*def_type)(arg_list);
typedef return_type def_type(arg_list);
這個是經常出現的兩種情況,return_type是函式返回型別,def_type是函式(指標)型別名,arg_list是函式引數類表,若是無參函式,arg_list可略去。
前一種形式較常見。定義的def_type是函式指標型別。後一種形式比較少見。定義的def_type是函式型別。兩者的區別類似於int與int*。
接下來舉乙個比較複雜的例子:
void (*signal (int signum, void (*sighandler)(int))) (int);
乍一看感覺很複雜,解釋一下,signal函式只有兩個引數,第乙個是int型引數signum;第二個引數是個函式指標sighandler,此函式無返回值,具有單個int型引數。signal函式返回乙個函式,此返回函式具有乙個int型引數且無返回值。
使用前面提到的typedef第一種形式重新描述如下:
typedef void (*sighandler)(int);
sighandler signal(int signum, sighandler);
或是使用typedef的第二種等價形式:
typedef void sighandler(int);
sighandler* signal(int signum, sighandler* handler);
函式指標 函式指標陣列和指標函式
1.函式指標 這個指標返回乙個函式 int f int x 宣告乙個函式指標 f func 將func函式的首位址賦給指標f 2.函式指標陣列 這個指標返回一組函式 include stdio.h void function0 void void function1 void void functi...
指標函式和函式指標
指標函式和函式指標 一 指標函式 當乙個函式宣告其返回值為乙個指標時,實際上就是返回乙個位址給呼叫函式,以用於需要指標或位址的表示式中。格式 型別說明符 函式名 引數 當然了,由於返回的是乙個位址,所以型別說明符一般都是int。例如 int getdate int aaa int,int 函式返回的...
函式指標和指標函式
函式指標 在程式執行中,函式 是程式的演算法指令部分,它們和陣列一樣也占用儲存空間,都有相應的位址。可以使用指標變數指向陣列的首位址,也可以使用指標變數指向函式 的首位址,指向函式 首位址的指標變數稱為函式指標。1 函式指標定義 函式型別 指標變數名 形參列表 函式型別 說明函式的返回型別,由於 的...