我有以下代碼:基本函數指針誤解
#include <stdio.h>
#include <conio.h>
int fun1 (int);
int fun2 (int);
int fun3 (int);
int (*fun4) (int) = fun1; // 1
void main()
{
int (*fun4) (int) = fun2; // 2
printf ("%d\n", fun4(3));
printf ("%d\n", fun3(3));
getch();
}
int fun1 (int x)
{
return x+1;
}
int fun2 (int x)
{
return 2*x;
}
int fun3 (int x)
{
return fun4(x);
}
它產生的輸出:
6
4
我不知道爲什麼發生這種情況。
在寫入// 2的行處,我們定義fun4指向fun2。所以從那時起,當我寫fun4(x)就像寫fun2(x)一樣。我不知道爲什麼第二次打印產量爲4.
任何人都可以解釋爲什麼發生這種情況?
有兩種不同的fun4。 – 2014-09-21 17:16:37