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;
        }
    }
}
相关推荐
小李小李快乐不已6 小时前
栈和堆理论基础
c++·算法·leetcode
夏幻灵6 小时前
CMD是什么
c++
HABuo7 小时前
【Linux进程(一)】进程深入剖析-->进程概念&PCB的底层理解
linux·运维·服务器·c语言·c++·后端·进程
图形学爱好者_Wu7 小时前
每日一个C++知识点|菱形继承
c++·程序员·编程语言
minglie17 小时前
Vitis HLS c转verilog
c语言·开发语言·fpga开发
.简.简.单.单.7 小时前
Design Patterns In Modern C++ 中文版翻译 第十章 外观模式
c++·设计模式·外观模式
武藤一雄7 小时前
C# 中线程安全都有哪些
后端·安全·微软·c#·.net·.netcore·线程
wuguan_7 小时前
C#递推算法
算法·c#·递推算法
十五年专注C++开发7 小时前
Jieba库: 一个中文分词领域的经典库
c++·分布式·自然语言处理·中文分词
_OP_CHEN7 小时前
【C++数据结构进阶】从 Redis 底层到手写实现!跳表(Skiplist)全解析:手把手带你吃透 O (logN) 查找的神级结构!
数据结构·数据库·c++·redis·面试·力扣·跳表