当前位置: 首页 > news >正文

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委托
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;}}
}
http://www.lryc.cn/news/373121.html

相关文章:

  • 红队攻防渗透技术实战流程:组件安全:JacksonFastJsonXStream
  • Perl 语言学习进阶
  • LangGraph实战:从零分阶打造人工智能航空客服助手
  • R可视化:R语言基础图形合集
  • mysql导入sql文件失败及解决措施
  • JS:获取鼠标点击位置
  • 使用开源的zip.cpp和unzip.cpp实现压缩包的创建与解压(附源码)
  • npm 异常:peer eslint@“>=1.6.0 <7.0.0“ from eslint-loader@2.2.1
  • Docker|了解容器镜像层(2)
  • 使用Python爬取temu商品与评论信息
  • mybatis学习--自定义映射resultMap
  • Elasticsearch之写入原理以及调优
  • python中装饰器的用法
  • php实现一个简单的MySQL分页
  • 算法训练营day23补签
  • 国密SM2JS加密后端解密
  • Cheat Engine.exe修改植物大战僵尸阳光与冷却
  • python内置模块之queue(队列)用法
  • Spring Security——结合JWT实现令牌的验证与授权
  • Vector的底层结构剖析
  • 实现抖音视频滑动功能vue3+swiper
  • Linux文件系统【真的很详细】
  • JAVA学习笔记DAY5——Spring_Ioc
  • WPF中的隧道路由和冒泡路由事件
  • ISO七层模型 tcp/ip
  • MySQL的三种重要的日志
  • 神经网络学习2
  • Spring Boot整合Redis通过Zset数据类型+定时任务实现延迟队列
  • Android入门第69天-AndroidStudio中的Gradle使用国内镜像最强教程
  • 深入浅出 Qt 中 QListView 的设计思想,并掌握大规模、高性能列表的实现方法