我不知道为什么int
旁边的括号中有*Predicate
typedef bool (*Predicate)(int);
答案 0 :(得分:4)
这将Predicate
声明为指向带有int
参数并返回bool
结果的函数的指针类型。 int
用括号括起来表示它是参数类型。
您可以这样使用它:
typedef bool (*Predicate)(int);
bool always_true(int) { return true; }
Predicate p = &always_true;
答案 1 :(得分:4)
typedef bool (*Predicate)(int);
意味着您要声明一个名为Predicate
的类型,该类型是接受单个int
参数并返回bool
的函数的函数指针。满足要求的功能将是:
bool is_zero(int val) {
return val == 0;
}
,您可以声明一个变量,例如:
Predicate mypredicate = is_zero;
在这种情况下,可能的目的是声明一个使用运行时提供的谓词函数执行过滤操作的函数;它会接受Predicate
作为其参数之一。
答案 2 :(得分:0)
它是一种类型定义的函数指针,该函数指针具有一个int类型的参数并返回bool
函数指针是唯一可以键入typedef指针的地方。
typedef bool (*Predicate)(int);
bool is_zero(int x)
{
return x ==0;
}
Predicate myfuncptr = is_zero;
int main()
{
if(myfuncptr(5))
printf("Zero");
else
printf("Not zero");
}