我无法弄清楚函数指针是如何在下面的代码中使用typedef。请问任何人都可以解释
#include<stdio.h>
typedef int(*fp)(int,int) ; this is typedef with function pointer i m unable to figure out?
int sum (int,int);
int main()
{
fp p,q; // p, q become function pointer too how?
p=sum;
printf("%d\n",p(20,10));
}
int sum(int i,int j)
{
return(i+j);
}
答案 0 :(得分:0)
嗯,理解起来并不多。您定义了一个新类型int(* fp)(int,int)。这不是函数指针,而是函数指针类型。将fp与float,int或任何其他基本类型进行比较。然后你声明上面提到的类型的p和q,并为p赋予相同类型的函数sum(隐式)。
答案 1 :(得分:0)
功能有签名
int NAME(int ,int );
所以指向它的指针是
int (*NAME_OF_POINTER)(int, int);
预测长名称定义函数指针的新类型
typedef int (*NEW_TYPE_NAME)(int, int);
并使用它。而不是
int (*myVar)(int, int) = sum;
你现在可以写了
NEW_TYPE_NAME myVar = sum;