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;
        }
    }
}
相关推荐
王老师青少年编程11 分钟前
2024年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第2题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
杜子不疼.20 分钟前
基于ATVC模板库的Ascend C Vector算子快速开发指南
c语言·开发语言·mfc
MSTcheng.22 分钟前
【C++】C++11新特性(三)
开发语言·c++·c++11
田野追逐星光29 分钟前
STL容器list的模拟实现
开发语言·c++·list
StandbyTime38 分钟前
《算法笔记》学习记录-第二章 C/C++快速入门
c++·算法笔记
我在人间贩卖青春44 分钟前
C++之结构体与类
c++··结构体
rainbow68891 小时前
C++实现JSON Web计算器
c++
C++ 老炮儿的技术栈1 小时前
Qt Creator中不写代如何设置 QLabel的颜色
c语言·开发语言·c++·qt·算法
知无不研1 小时前
lambda表达式的原理和由来
java·开发语言·c++·lambda表达式
艾莉丝努力练剑1 小时前
【Linux:文件】基础IO
linux·运维·c语言·c++·人工智能·io·文件