这种宣言有什么用?

时间:2014-07-22 09:01:49

标签: c typedef declaration

我偶然发现了这种声明。

typedef int (*func) (int,int,int);

这是什么意思和用途?

3 个答案:

答案 0 :(得分:1)

它将func定义为函数的类型,它接受3个整数并返回整数。

当您将函数作为回调传递或将函数地址放入数组或类似的东西时,这很有用。

答案 1 :(得分:0)

它定义了一个类型func,它是一个返回int并获取3 int个参数的函数的指针。

使用它的一个例子是:

typedef int (*func) (int, int, int);

int foo(int a, int b, int c) {
    return a + b * c;
}

...

// Declare a variable of type func and make it point to foo.
// Note that the "address of" operator (&) can be omitted when taking the
// address of a function.
func f = foo; 

// This will call foo with the arguments 2, 3, 4
f(2, 3, 4);

更现实的情况可能是拥有一堆具有相同返回类型并使用相同类型/数量的参数的函数,并且您希望根据某个变量的值调用不同的函数。您可以将函数指针放在数组中并使用索引来调用相应的函数,而不是使用一堆if - 语句或大switch/case

答案 2 :(得分:0)

这是typedef的名字。它读作:func is a pointer to a function that takes three ints and returns an int.

您可以在此link

上查看更多内容