这是什么意思,为什么句子中的(int)是?

时间:2019-01-18 00:12:40

标签: c

我不知道为什么int旁边的括号中有*Predicate

typedef bool (*Predicate)(int);

3 个答案:

答案 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");
}