C语言代码:
C代码
//声明整数相加函数
int add_int(int a, int b)
{
return a + b;
}
//声明浮点数相加函数
float add_float(float a, float b)
{
return a+b;
}
//定义函数指针类型
typedef int (*int_add_funtion)(int a,int b);
//定义函数指针类型
typedef float (*float_add_funtion)(float a , float b);
int main()
{
//声明一个函数指针,名字叫做int_add_fun,相当于创建int_add_funtion这个类型的实例,下同
int_add_funtion int_add_fun;
//声明一个函数指针,名字叫做float_add_fun
float_add_funtion float_add_fun;
//将该函数指针指向 整数相加函数 的入口地址
int_add_fun = add_int;
//将该函数指针指向 浮点数相加函数 的入口地址
float_add_fun = add_float;
//以常规方式调用 整数相加函数,打印出100+200的计算结果
printf("%d/n", add_int(100,200));
//用函数指针调用 整数相加函数,打印出100+200的计算结果
printf("%d/n", (*int_add_fun)(100,200));
//以常规方式调用 浮点数相加函数,打印出100.32 + 324.54的计算结果
printf("%f/n", add_float(100.32f, 324.54f));
//用函数指针调用 浮点数相加函数,打印出100.32 + 324.54的计算结果
printf("%f", (*float_add_fun)(100.32f, 324.54f));
return 0;
}
c# 代码
using System;
using System.Collections.Generic;
using System.Text;
namespace DelegateTest
{
class Program
{
//声明整数相加函数
static int add_int(int a, int b)
{
return a + b;
}
//声明浮点数相加函数
static float add_float(float a, float b)
{
return a + b;
}
//定义委托类型
delegate int int_add_funtion(int a, int b);
//定义委托类型
delegate float float_add_funtion(float a, float b);
//程序主入口函数
static void Main(string[] args)
{
//声明一个委托,即创建int_add_funtion这个委托类型的实例
int_add_funtion int_add_fun;
//声明一个委托,即创建float_add_funtion这个委托类型的实例
float_add_funtion float_add_fun;
//将委托指向整数相加函数
int_add_fun = add_int;
//将委托指向浮点数相加函数
float_add_fun = add_float;
//以常规方式调用 整数相加函数,打印出100+200的计算结果
Console.WriteLine(add_int(100, 200));
//用委托调用 整数相加函数,打印出100+200的计算结果
Console.WriteLine(int_add_fun(100,200));
//以常规方式调用 浮点数相加函数,打印出计算结果
Console.WriteLine(add_float(100.123f, 200.423f));
//用委托调用 浮点数相加函数,打印出计算结果
Console.WriteLine(float_add_fun(100.123f, 200.423f));
Console.Read();
}
}
}