關於typedef精簡複雜定義問題?

時間 2021-06-02 07:32:15

1樓:黃亮anthony

從左往右讀,遇到括號(或識別符號),從右往左讀,直到遇到對應的括號。在括號內重複這個過程。

從左往右讀int (

從右往左讀) (const char *, const char *);

這個型別記作A

從左往右讀*Register (

從右往左讀)

這是乙個函式A* Register(),引數見下從左往右讀int (

從右往左讀)(const char *, const char *)這是型別記作B

從左往右讀*pf

這是乙個指標B* pf

整個是A* Register(B* pf)注意到A和B一樣,typedef乙個A就可以了typedef int A(const char *, const char *)

A* Register(A* pf)

2樓:

首先這個

int(

*Register

(int(*

pf)(

const

char*,

const

char

*)))

(const

char*,

const

char*);

是函式宣告,我之前從沒寫過這種函式宣告,巢狀關係一多會很難讀懂。

我隨意測試了下,它看起來像這樣:

#include

// int(*pf)(const char*, const char*);

typedef

int(

*MATCH

)(const

char*,

const

char*);

// 這是函式宣告

int(

*Register

(int(*

pf)(

const

char*,

const

char

*)))(

const

char*,

const

char*);

// 前乙個函式宣告可以寫成這樣

typedef

MATCH(*

REGISTER

)(MATCH

);// 這是乙個和 MATCH 簽名相同的函式intStrCounter

(const

char

*strA

,const

char

*strB

)// 這是函式定義

MATCH

Register

(MATCH

match

)int

main

(void

)真是個空虛的週末早晨啊。

關於精聽法練習聽力的困惑?

逸品賢茗堂 謝瑤!精煉聽力是在下的弱項。本科的時候最頭疼的是聽力課。滿滿的血淚。那時候詞彙量低階 語法低階。後來嘗試大聲模仿newsspeakers的發音和語調大聲朗讀新聞原稿,幾乎都要背下來了。結果沒錯,然並卵。那時候是英語沒開啟任督二脈的階段。結果口語提高很快。精讀課老師累了的時候就要我和另乙個...

C 11 中 typedef 和 using 有什麼區別?

碧水溪風 說個真事,同事n年c 開發經驗,c 特別溜。有一次我拿typedef和 define反過來覆過去問他,一分鐘不到他就懵圈了,根本分不清typedef和 define該怎麼用了。 原子筆 using 是C 11用來擴充套件typedef 的,不在typedef上擴充套件是為了盡可能保持C語言...

關於晨小晨精分的錘真嗎?

我一直想說但沒說,因為工作原因。借這個月問題,大概地說一下簡單邏輯吧。第一,微博公告說三個賬號用不同號碼註冊,微博又說三個賬號於2019年6月起在同一裝置登入。但是!微博沒有告訴我,三個註冊的手機號碼的主人是否同乙個人 我們都知道,手機號碼早就實名制了 微博也沒有告訴我,三個賬號在2019年6月以前...