我想编写一个灵活的 C 程序,允许我执行多种不同的操作。下面是我的代码,但它不起作用。
int result;
Void operation(void (*funcpt1)(int (*funcpt2)(int i)))
{
(*funcpt1)(funcpt2());
}
Void sum(void (*funcpt)(void))
{
int i;
result = 0;
for(i = 1; i < 10; i++)
{
result += (*funcpt)(i);
}
}
Void multiply(void (*funcpt)(void))
{
int i;
result = 1;
for(i = 1; i < 10; i++)
{
result *= (*funcpt)(i);
}
}
int square(int i)
{
return i*i;
}
int cube(int i)
{
return i*i*i;
}
void main(void)
{
operation(sum(square()));
printf("%d\n",result);
operation(sum(cube()));
printf("%d\n",result);
operation(multiply(square()));
printf("%d\n",result);
operation(multiply(cube()));
printf("%d\n",result);
}
最佳答案
这是您要找的吗?
#include <stdio.h>
typedef int (*unary_operation)(int);
typedef int (*binary_operation)(int, int);
int add(int lhs, int rhs) {
return lhs + rhs;
}
int multiply(int lhs, int rhs) {
return lhs * rhs;
}
int square(int i) {
return i*i;
}
int cube(int i) {
return i*i*i;
}
int main() {
unary_operation unary_op = &cube;
printf("%d\n", unary_op(3));
binary_operation binary_op = &add;
printf("%d\n", binary_op(1, 2));
}
输出为:
27
3
关于C:传递函数指针两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22383262/