C/C#关于函数调用的一些心得
C
首先,存储函数的地址的变量在形参中是一个指针变量。如下,我声明了个函数:
void Seperate(int A[], int m, int B[][maxSize],int M,int N);//从A中取出连续M个以上大于N的数据段放入B
当我想用函数指针在另一个函数中调用这个函数的时候,传进去的应该是Seperate这个函数的地址,而不是完整的函数。
错误例子:
void fun(void (*f)(int A[], int m, int B[][maxSize], int M, int N)){}int main(){fun(&Seperate(A, maxSize, B, 5, 120));return 0;}
这样的想法是错误的,因为形参中,f是一个变量,不是一个完整的函数。
正确调用:
void fun(void (*f)(int A[], int m, int B[][maxSize], int M, int N))
{int A[maxSize], i;for (i = 0; i < maxSize; ++i){A[i] = rand() % 100 + 100;}int B[maxSize][maxSize];f(A, maxSize, B, 5, 120);}int main()
{fun(&Seperate);//注意:函数名 等价于 函数名取地址,所以写成Seperate也完全没有问题system("pause");return 0;
}
C编程这么久,目前用到函数指针的题目只有一个,那就是求定积分函数。由于求一个函数的定积分,必须把函数输入进去,这个时候,函数指针就派上大用场了,可以在定积分函数的形参列表定义函数指针变量,这样想要求某个函数的定积分的时候,直接把这个函数名传进去就行,使得求定积分函数就成了一个通用函数,而不是求单独某个函数的定积分。用术语说,这种使用方式称为“模版方法”,即“借用”指定的外部方法来产生结果。
C#
C#中delegate类型是函数指针的升级版,说到底还是把传进来的函数的内存地址保存起来了。
C/C#关于函数调用的一些心得相关推荐
- ucore lab5
UCORE实验5 实验目的 了解第一个用户进程创建过程,系统调用框架的实现机制,ucore如何实现系统调用sys_fork/sys_exec/sys_exit/sys_wait来进行进程管理. 实验内 ...
- lua 函数调用1 -- 闭包详解和C调用
这里, 简单的记录一下lua中闭包的知识和C闭包调用 前提知识: 在lua api小记2中已经分析了lua中值的结构, 是一个 TValue{value, tt}组合, 如果有疑问, 可以去看一下 一 ...
- Python心得--如何提高代码质量
前些日子用python基于prometheus开发了一个vsphere volume卷监控的exporter,于是跟vsphere的api(pyvmomi)接口打上了交道,开发的过程中你会发现pyvm ...
- zzfrom水木-Linux环境学习和开发心得(作者:lunker)
转自水木lunker,非常好的文章,在此鸣谢之. 本人水平有限,如果有错误和遗漏,或者有更好的建议,请大家认真的拍. 强烈建议: 文中涉及的图书最好入手一个英文版的,如果实在阅读有困难,可以在电脑中准 ...
- PHP基础班初学心得:脑洞实验-JS变量存储函数与return的一些问题
本人刚参加PHP基础班培训第一天,由于之前毫无基础,分享的心得可能不规范,方法也许也"旁门左道",不能保证质量,只作自己总结学习,也希望能帮助到同样是初学者的朋友们,共同进步. 在 ...
- 【Visual C++】一些开发心得与调试技巧
自己平时收集的一些技巧与心得,这里分享出来,普及一下知识. 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Releas ...
- 《ODAY安全:软件漏洞分析技术》学习心得-----shellcode的一点小小的思考
I will Make Impossible To I'm possible -----------LittleHann 看了2个多星期.终于把0DAY这本书给看完了,自己动手将书上的实验一个一个实现 ...
- 谈谈选用技术的原则,技术学习方法技巧,阅读代码的技巧及其它 MSF的一点心得...
谈谈技术原则,技术学习方法,代码阅读及其它(正文) 这篇文章是前一阵在水木BBS上和别人讨论中偶自己发言的摘编,是偶这几年开发过程完全经验式的总结.完全个人经验,供批判. 一.选用技术的原则 比较规范 ...
- 在 .NET Core 3.0 中实现 JIT 编译的 JSON 序列化,及一些心得与随想
源码:https://github.com/Martin1994/JsonJitSerializer NuGet:https://www.nuget.org/packages/MartinCl2.Te ...
- c语言实训作业总结,c语言程序设计上机实践心得报告
c语言程序设计上机实践心得报告 班级:11 电信 2 姓名:莫金波 学号:1107032242012.12.28 惠州学院 HUIZHOU UNIVERSITY 我们专业的学生在专业老师的带领下进行了 ...
最新文章
- 17个Python骚操作,你都Ok吗?
- 为什么很多SpringBoot开发者放弃了Tomcat,选择了Undertow?
- php字符串加密解密源码,PHP中加密解密字符串函数源代码
- 双向链表删除节点时间复杂度_删除链表的节点(剑指offer第十七题)
- Java 大数类BigInteger与BigDecimal详细介绍(配蓝桥杯例题讲解)
- WebPart中的ReplaceTokens 方法
- pytorch 数据类型
- 游戏中基于物理的渲染(一)
- python安卓自动化脚本_Autojs-用JavaScript实现自己的安卓手机自动化工具脚本
- Android大图片裁剪之手机拍照和从相册中选择注意点
- Inception-v4结构代码
- 一步一步超级详细的zabbix安装教程
- 青果教务管理系统存储型XSS 一枚
- 将类似html数据打印机,白激光打印机的工作原理.doc
- 利用ViewItems来管理我们ListView项之间的drag-and-drog
- 类似零基础学python的小说_就像看小说一样,让你一个小时学会Python零基础「强烈推荐」...
- Caffe:图像数据转换成ldb(leveldb/lmdb)文件
- [转]XPO 条件相关类
- 使用NPOI导出Excel模板
- matlab实践总结与体会,MatLab实习心得体会
热门文章
- 京东618自动浏览叠蛋糕app
- 易捷行云EasyStack与火星高科完成产品互认证,保护云上数据
- java登录界面圆形头像,Android使用CircleImageView实现圆形头像的方法
- 西瓜书k-means例子matlab实现
- java代码如何整合_Java如何合并两个PPT文档?
- 去掉最高分和最低分的平均分trimmean,计算频率最高的那个数即众数mode.sngl,判断数据是否重复
- python stdin stdout_Python子进程:给出stdin,读取stdout,然后给出更多stdin
- 费解的开关 (蓝桥杯倒计时12天)
- “WORD上次启动失败,以安全模式启动”的解决方法
- 第三讲:如何构建双活数据中心方案