這個C函式怎麼理解?儘量詳細,多謝

時間 2021-08-30 10:17:25

1樓:

這是一個函式,

函式名:errorsethandler

引數:function是個函式型別的變數,void (*)(int, char_t *),這個函式型別有兩個引數,一個整型,一個char_t *的指標型,返回是個void *指標。

返回:是個函式型別,void (*)(int , char_t *),型別說明跟上面一樣。

void (*errorsethandler(void (*function)(int etype, char_t *msg)))(int etype, char_t *msg)

補充一下:

通過typedef可以簡化這個函式的形式:

typedef void (*errhdlr)(int, char_t *);

然後這個函式可以簡化成:

errhdlr errorsethandler(errhdlr function)

這樣是不是就很直觀了

2樓:匿名使用者

從裡到外介紹:

void (*function)(int etype, char_t *msg)這個叫函式指標(請區別於指標函式:返回值是指標的函式),他首先是一個指標,這個指標指向的是一個函式,他的宣告方式是:

型別 (* 函式名指標)(引數),

typedef  void (*myfun)(int etype, char_t *msg);/定義函式指標

你可以把他理解為int,float之類的一種型別,只是他是個指標

於是乎,你的程式變成了這樣:

void (*errorsethandler(myfun function))(int etype, char_t *msg)//

你的這個函式的名稱實際叫 errorsethandler,他是myfun型別的,即他也是一個函式指標,他的引數也是myfun型別的。

於是我們可以這樣寫:

myfun errorsethandler(myfun function);//定義函式

myfun errorsethandler(myfun function)函式體

累死俺了,到底對不對呢,請看以下程式,儘量根你的相同吧。

#include

void func1()

void func2()

typedef void (*myfunc)(void);

myfunc sethandler(myfunc function);

myfunc sethandler(myfunc function)

void main()

{myfunc pfunc1,pfunc2,pfunc3;

pfunc1=func1;

pfunc2=func2;

pfunc3=sethandler(pfunc1);

pfunc3();

pfunc3=sethandler(pfunc2);

pfunc3();

c語言for這個語句怎麼理解,C語言for 這個語句怎麼理解?

風千觴 for語句的一般形式為 for 表示式1 表示式2 表示式3 語句3個表示式的主要作用是 表示式1 設定初始條件,只執行一次。可以為零個 一個或多個變數設定初值。表示式2 是迴圈條件表示式,用來判斷是否繼續迴圈。在每次執行迴圈體前先執行此表示式,決定是否繼續執行迴圈。表示式3 作為迴圈的調整...

Excel這個函式應該如何理解?

本週 上週這些是列的標題,這是超級表裡面的公式,單元格會使用標題表示。漲幅的計算公式就是 本週 上週 上週,使用if的判斷達到本週 或者上週為0的時候結果調整為 abs是絕對值,使得降幅也用正數表示。如果上週指數 本週指數 0,且上週指數 0,那麼註明 計算 本週指數 上週指數 上週指數的絕對值。請...

c語言print這個函式怎麼用,C語言如何使用print語句

printf後面的引數包括 格式控制字串 和輸出變數的列表 格式控制字串 由格式控制字元和普通字元。其中前者以 開始加某一個特殊字元。比如 d為輸出整數 c輸出字元。普通字元是原樣輸出的內容。輸出變數列表即為輸出的變數,其個數要與控制字元相對於。比如有int a 3,b 4,然後pritf a d,...