以下三种声明的含义是什么?
1. typedef void *(foo)(int);
2. typedef void (*foo)(int);
3. typedef void *(*foo)(int);
第2种个是用来定义一类形如void foo(int)
的函数的,比如
typedef void (*foo)(int);
void demo(int i)
{
}
int main(void)
{
foo func = demo;
return 0;
}
第3类和第2类类似,不过返回值变成了指针类型(在上面就是void *
类型)
1 的 foo 用于函数指针时还要加个 *
, 可以说是函数 指针 类型...
typedef void *(foo)(int);
void* f(int i) { return NULL; }
foo* x = f;
不过一般不这么用
2, 3 的 foo 是函数指针类型, 对应的函数的返回类型分别是 void
, void*