void(*
signal
(int signum,
void
(* handler)
(int))
)(int)
;// 等價於下面兩行
typedef
void
(*sighandler_t)
(int);
sighandler_t signal
(int signum,sighandler_t handler)
1、 signal(int signum,void(* handler)(int))這是乙個函式,函式名為signal
(1) 第乙個形參:int signum,是乙個整形變數;
(2) 第二個形參:void(*handler)(int),這是乙個函式指標,指向:返回值為void型,且帶乙個int型的形參的函式。
也就是說,這個形參,是乙個指標,或者說是乙個位址,可以理解為這個形參是函式名,因為函式名是函式的入口位址。裡面分析完了。
2、 signal函式的外面是 void(*)(int),想一想,在定義或者宣告函式的時候,都需要說明函式返回值的型別,這個signal函式的形參已經明確了,但是返回值還不知道,這個void(*)(int)
就是返回值型別,這個型別是乙個函式指標,碰巧的是,這個函式指標指向的函式型別和signal的第二個形參指向的型別相同,都是指向:返回值為空,且帶乙個int型別形參的函式。
3、因此先用typedef定義一種資料型別,這個型別就是void(*)(int)
,將這種型別定義為,或者說是起名名,叫做sighandler_t。sighandler_t = void()(int),所以可以將void()(int)型別的函式,在宣告或者定義的時候用sighandler_t。
4、signal函式返回值為void(*)(int)
型,用sighandler_t代替,第2個形參是void(*)(int)
型,用sighandler_t代替。
typedef 函式指標
關於c 中函式指標的使用 包含對typedef用法的討論 一 簡單的函式指標的應用。形式1 返回型別 函式名 參數列 char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面提到的 形式1 認識到它是乙個指向某種函式的指標,...
typedef 函式指標
形式1 返回型別 函式名 參數列 cpp view plain copy print?char pfun int char glfun int a void main char pfun int char glfun int a void main 第一行定義了乙個指標變數pfun。首先我們根據前面...
typedef函式指標
typedef int myfun int,int 這種用法一般用在給函式定義別名的時候 上面的例子定義myfun 是乙個函式指標,函式型別是帶兩個int 引數,返回乙個int 在分析這種形式的定義的時候可以用下面的方法 先去掉typedef 和別名,剩下的就是原變數的型別.去掉typedef和my...