我正在看「C++思維」Bruce Eckel。第164頁(波蘭語版)第3章是關於函數的指針。從書中指向函數的難點
例子:
void * (*(*fp1)(int))[10]
float (*(*fp2)(int,int,float))(int)
double (*(*(*fp3)())[10])()
int (*(*f4())[10])()
你能告訴我,我應該如何解釋這一點,並通過這些例子創造了什麼,因爲我不明白這本書的解決方案?
我正在看「C++思維」Bruce Eckel。第164頁(波蘭語版)第3章是關於函數的指針。從書中指向函數的難點
例子:
void * (*(*fp1)(int))[10]
float (*(*fp2)(int,int,float))(int)
double (*(*(*fp3)())[10])()
int (*(*f4())[10])()
你能告訴我,我應該如何解釋這一點,並通過這些例子創造了什麼,因爲我不明白這本書的解決方案?
我希望這個棘手的規則將幫助你放鬆這樣的難題: http://c-faq.com/decl/spiral.anderson.html
讓我們4:int (*(*f4())[10])()
它讀取f4
評估(f4()
),然後解除引用((*f4())
)可認購((*f4())[10]
)然後解除引用((*(*f4())[10])
)並評估以給出int
(int (*(*f4())[10])()
)。
因此,它是一個函數返回數組的指針返回int
函數的指針。
http://cdecl.org/ –
使用'cdecl'。這不是一個有趣的問題。 –
我強烈反對爲了「用C++思考」而需要知道這一點的想法。 –