C/C++函数指针、C#委托是什么?

函数指针

c 复制代码
#include<stdio.h>

//声明函数指针
typedef int(*Calc)(int a, int b);
int Add(int a, int b)
{
	return a + b;
}
int Sub(int a, int b) {
	return a - b;
}

int main() {
	Calc funcPoint1 = &Add;
	Calc funcPoint2 = &Sub;
	
	int x = 120;
	int y = 140;
	int z = 0;
	z = Add(x, y);
	z = funcPoint1(x, y);
	printf("%d+%d=%d\n", x, y, z);

	z = Sub(x, y);
	z = funcPoint2(x, y);
	printf("%d-%d=%d\n", x, y, z);
	system("pause");


}

一切皆地址

变量(数据):是以某个地址为起点中的一段内存中所存储的值;

函数(算法):是以函数名为地址起点的一段内存中所存储的一组机器语言指令;

C#中委托是什么?

委托(delegate)是函数指针的'升级版';

委托的简单使用
  • Action委托
  • Func委托
csharp 复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FunctionPointerExampleCsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            Calculator ca = new Calculator();
            Action action = new Action(ca.Report);
            ca.Report();
            action.Invoke();
            action();

            Func<int, int, int> func = new Func<int, int, int>(ca.Add);
            Func<int, int, int> func2 = new Func<int, int, int>(ca.Sub);

            int result=func.Invoke(12, 34);
            Console.WriteLine(result);
            result=func2.Invoke(123, 34);
            Console.WriteLine(result);
            result =func(12, 34);
            Console.WriteLine(result);
            result =func2(123, 34);
            Console.WriteLine(result);


        }
    }
    class Calculator
    {
        public void Report()
        {
            Console.WriteLine("Hello,Tom!");
        }
        public int Add(int a, int b)
        {
            return a + b;
        }
        public int Sub(int a, int b)
        {
            return a - b;
        }
    }
}
相关推荐
一匹电信狗7 小时前
【LeetCode_547_990】并查集的应用——省份数量 + 等式方程的可满足性
c++·算法·leetcode·职场和发展·stl
Queenie_Charlie8 小时前
小陶的疑惑2
数据结构·c++·树状数组
梵刹古音9 小时前
【C语言】 函数基础与定义
c语言·开发语言·算法
梵刹古音9 小时前
【C语言】 结构化编程与选择结构
c语言·开发语言·嵌入式
Queenie_Charlie10 小时前
小陶与杠铃片
数据结构·c++·树状数组
CoderCodingNo10 小时前
【GESP】C++四级/五级练习题 luogu-P1223 排队接水
开发语言·c++·算法
爱编码的小八嘎10 小时前
C语言对话-22.想睡觉,偶然
c语言
sycmancia10 小时前
C++进阶01——示例
开发语言·c++
CoderCodingNo10 小时前
【GESP】C++五级/四级练习题 luogu-P1413 坚果保龄球
开发语言·c++·算法
阿猿收手吧!11 小时前
【C++】C++原子操作:compare_exchange_weak详解
java·jvm·c++