gpt4 book ai didi

C:传递函数指针两次

转载 作者:行者123 更新时间:2023-11-30 21:38:01 25 4
gpt4 key购买 nike

我想编写一个灵活的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com