C语言自行编写程序,实现委托action,func,多播委托,并引用方法
时间: 2023-08-23 16:05:55 浏览: 90
以下是一个简单的示例程序,演示如何使用C语言实现委托、多播委托和引用方法:
```c
#include <stdio.h>
// 定义委托类型
typedef void (*Action)(int);
typedef int (*Func)(int, int);
// 实现委托
void Print(int num)
{
printf("Number: %d\n", num);
}
// 实现Func类型的方法Add
int Add(int a, int b)
{
return a + b;
}
// 实现多播委托
void Multicast(Action* actions, int count, int num)
{
for (int i = 0; i < count; i++)
{
actions[i](num);
}
}
int main()
{
// 声明一个委托变量并赋值
Action printAction = &Print;
// 调用委托
printAction(123);
// 声明一个Func类型的变量并赋值
Func addFunc = &Add;
// 调用Func类型的方法
int result = addFunc(1, 2);
printf("Result: %d\n", result);
// 声明多个委托变量并添加到数组中
Action actions[] = {&Print, &Print};
// 调用多播委托
Multicast(actions, 2, 456);
return 0;
}
```
在上面的示例程序中,我们首先定义了两种委托类型:`Action`和`Func`。`Action`表示一个无返回值、带一个`int`类型参数的委托类型,`Func`表示一个返回值为`int`、带两个`int`类型参数的委托类型。
接着,我们实现了一个`Print`函数作为`Action`类型的委托方法,以及一个`Add`函数作为`Func`类型的方法。在`main`函数中,我们首先声明了一个`printAction`委托变量,并将其赋值为`Print`方法。
然后,我们通过调用`printAction(123)`来执行委托,这会输出`Number: 123`。接着,我们声明了一个`addFunc`变量,并将其赋值为`Add`方法。我们通过调用`addFunc(1, 2)`来执行`Add`方法,并将结果输出到控制台。
最后,我们声明了一个`actions`数组,并将两个`Print`委托添加到其中。我们通过调用`Multicast(actions, 2, 456)`来执行多播委托,这会依次调用数组中的两个委托并输出结果。
通过上述示例程序,我们可以看到如何使用C语言实现委托、多播委托和引用方法。
阅读全文