float (*func(unsigned id))(float value);
是一個函數的聲明它接受一個無符號整型作爲參數和指針返回到功能。
到該指針指向(函數f
)開一個浮子作爲參數和返回浮動的功能。它的聲明是:
float f(float value);
的名稱func
功能的:
float (*func(unsigned id))(float value);
^^^^
的參數的函數func
的:
float (*func(unsigned id))(float value);
^^^^^^^^^^^
的的返回類型功能func
:
float (*func(unsigned id))(float value);
^^^^^^^^ ^^^^^^^^^^^^^
如果函數有沒有參數它是這樣的:
float (*func())(float value);
你問:還有,就是:func(unsigned id)
計算結果爲一些指針表達式?
沒有,它的名字func
和參數的函數
的(unsigned id)
你開始看到什麼是現在func
?它是一個返回指向另一個聲明函數的指針的函數。
我包含了代碼,您可以在其中明確地看到func
函數的返回值與參考f
函數相比的返回值。
#include <stdio.h>
float f(float value);
float (*func(unsigned id))(float value);
int main()
{
/* print the address of the f function
* using the return value of function func
*/
printf("func return value: %p\n\n", func(2));
/* print the address of the f function referencing
* its address
*/
printf("referencing f address: %p\n", &f);
return 0;
}
float (*func(unsigned id))(float value)
{
printf("Original function with argument id = %d called\n", id);
return f;
}
float f(float value)
{
printf("f function\n");
return 0.1;
}
不值得加入作爲一個答案,但'cdecl'是一個命令行工具,將解釋這個給你。 – abligh 2014-11-23 12:48:42