鑑於打印功能:C++指針函數和非指針功能
void print(int i)
{
cout << i << endl;
}
爲什麼我們允許這樣做的主要功能:
void (*bar)(int);
bar = &print;
但不是這樣的:
void fizz(int);
fizz = print;
但是,當涉及到函數參數時,我們可以將指針傳遞給函數n或該功能的副本:
void foo(void (*f)(int))
{
(*f)(1);
}
void test(void f(int))
{
f(1);
}
有人知道這些差異的原因嗎?
bar的定義是函數指針的正確語法,而fizz只是定義函數簽名的語法。我不熟悉你的函數測試的語法,所以我希望別人可以清除它。 – Parappa
請參閱http://stackoverflow.com/questions/26559758/function-to-function-pointer-decay – sfjac
就像使用數組類型作爲函數參數一樣,它將轉換爲指向第一個元素的指針。顯然這隻能在函數聲明中使用。不尋常的,但不是沒有使用。 – Macmade