如何编写函数指针比调用它们更好?

Hem*_*ava 0 c c++ function-pointers

我很高兴最近使用函数指针.我知道它们是如何工作的.函数指针的经典示例是:

int add() {
  return (100+10);
}
int sub() {
  return (100-10);
}

void print(int x, int y, int (*func)()) {
  printf("value is : %d", (x+y+(*func)()));
}

int main() {
  int x=100, y=200;
  print(x,y,add);
  print(x,y,sub);
}
Run Code Online (Sandbox Code Playgroud)

前几天有人问我,它比调用(内部主要)更好:

print(add(x,y));
print(sub(x,y));
Run Code Online (Sandbox Code Playgroud)

我努力解释这一点.它只是关于堆栈还是还有其他东西躺在下面?

Rei*_*ica 6

我真的不明白为什么你展示的代码将是函数指针的经典例子.从这样的代码中,函数指针的实用程序更加明显:

void transform(int *dst, const int *src, size_t len, int (*f)(int))
{
  for (size_t i = 0; i < len; ++i)
    dst[i] = f(src[i]);
}
Run Code Online (Sandbox Code Playgroud)

基本上,如果您接受指向函数的指针作为参数,它允许您对选择的数据应用客户端提供的操作.