有功能的typedef这是被问到但是无法理解?

时间:2014-08-23 07:31:43

标签: c function-pointers typedef

我无法弄清楚函数指针是如何在下面的代码中使用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);
}

2 个答案:

答案 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;