无法理解C 中的功能定位器

Unable to understand function-pointers in c++

本文关键字:功能 定位器      更新时间:2023-10-16

我正在阅读 bjarne stroustrup的C 编程语言。它说明了解释功能调子的示例:

int cmp1(const void∗ p, const void∗ q) // Compare name strings
{
  return strcmp(static_cast<const User∗>(p)−>name,static_cast<const User∗>(q)−>name);
}

然后在ssort中使用此cmp1,类似的东西:

int main()
{
  cout << "Heads in alphabetical order:n";
  ssort(heads,6,sizeof(User),cmp1);
  print_id(heads);
  //Rest of function body                
}

我的问题是:&cmp1是在ssort()中作为参数传递的,因为我们不能将函数作为参数传递,我们只能传递函数点?

我的问题是:&cmp1是在ssort()中作为参数传递的,因为我们不能作为参数传递函数,我们只能传递函数销量?

您的代码不使用&cmp1。因此,您的问题与您的代码不符。

仍然可以通过不使用addressof运算符(&(的函数。

ssort(heads, 6, sizeof(User), &cmp1);

相同
ssort(heads, 6, sizeof(User), cmp1);

在此上下文中功能指针的功能衰减。

函数名称确实代表了该函数的可执行代码的起始地址。因此,它更像是阵列的名称可以用作阵列本身的指针。也经历https://www.geeksforgeeks.org/function-pointer-in-c/