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)
我努力解释这一点.它只是关于堆栈还是还有其他东西躺在下面?
我真的不明白为什么你展示的代码将是函数指针的经典例子.从这样的代码中,函数指针的实用程序更加明显:
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)
基本上,如果您接受指向函数的指针作为参数,它允许您对您选择的数据应用客户端提供的操作.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |