- 浏览: 55313 次
- 性别:
- 来自: 北京
文章分类
最新评论
C#中有委托,actionscript中有 function类型等这些于C语言中的函数指针有什么关系呢,在汇编中又是怎么样对应的呢?今天我们来总结一下:
ActionScript:
java
C#
delegate void dosomething(string name); class demo { public void test(string name) { System.Console.WriteLine(name); } } class Program { static void Main(string[] args) { demo d = new demo(); dosomething d3o = d.test; d3o("hello word"); } }
00000000 push ebp 00000001 mov ebp,esp 00000003 push edi 00000004 push esi 00000005 push ebx 00000006 sub esp,40h 00000009 mov esi,ecx 0000000b lea edi,[ebp-4Ch] 0000000e mov ecx,10h 00000013 xor eax,eax 00000015 rep stos dword ptr es:[edi] 00000017 mov ecx,esi 00000019 mov dword ptr [ebp-3Ch],ecx 0000001c cmp dword ptr ds:[007A0AE8h],0 00000023 je 0000002A 00000025 call 5BA747B7 0000002a xor edx,edx 0000002c mov dword ptr [ebp-44h],edx 0000002f xor edx,edx 00000031 mov dword ptr [ebp-40h],edx 00000034 nop demo d = new demo(); 00000035 mov ecx,7A1A98h 0000003a call FFF3FD48 0000003f mov dword ptr [ebp-48h],eax 00000042 mov ecx,dword ptr [ebp-48h] 00000045 call FFF5A468 0000004a mov eax,dword ptr [ebp-48h] 0000004d mov dword ptr [ebp-40h],eax dosomething d3o = d.test; 00000050 mov ecx,7A1B50h 00000055 call FFF3FD48 0000005a mov dword ptr [ebp-4Ch],eax 0000005d mov eax,22C818h 00000062 push eax 00000063 mov ecx,dword ptr [ebp-4Ch] 00000066 mov edx,dword ptr [ebp-40h] 00000069 call 5AAC1918 0000006e mov eax,dword ptr [ebp-4Ch] 00000071 mov dword ptr [ebp-44h],eax d3o("hello word"); 00000074 mov edx,dword ptr ds:[02822188h] 0000007a mov ecx,dword ptr [ebp-44h] 0000007d mov eax,dword ptr [ecx+0Ch] 00000080 mov ecx,dword ptr [ecx+4] 00000083 call eax 00000085 nop } 00000086 nop 00000087 lea esp,[ebp-0Ch] 0000008a pop ebx 0000008b pop esi 0000008c pop edi 0000008d pop ebp 0000008e ret
C语言
Python
发表评论
-
asp.net性能优化
2015-03-31 22:09 812今天碰到了一个问题,asp.net应用中双机的一台间歇性的 ... -
JVM帖子收藏及分类
2015-02-16 11:59 1010类加载: 实现机制: Java instan ... -
nginx 笔记
2015-01-19 21:12 0阻塞:调用一个操作后,CPU必须不停的检查,如果状态没有准备 ... -
linux 下用netbeans调试sqlite3
2015-01-10 14:35 12711:首先需要安装tclsh 从http://tcl.tk ... -
Linux java字符编码
2014-11-21 13:33 0f -
rhel6.5 安装R语言
2014-11-10 22:25 942今天在rhel 6.5上用源码安装R语言,遇到了一些问题, ... -
centos 6.5 编译openjdk7
2014-11-09 14:57 2183在centos6.5上编译openjdk7 第一步:查看 ... -
java编程系列一: java语言和class文件
2014-11-02 11:37 0要很好的了解一门语言,我们需要很多知识,这一节我们着重关注 ... -
lua 源码阅读一虚拟机
2014-08-01 15:18 928lua的虚拟机是基于寄存器的,我们所了解的虚 ... -
mono mvc4的安装过程中遇到的一些问题记录
2014-06-10 23:46 0基本按照这篇文章来操作: http://www.cnbl ... -
c#需要注意的地方
2014-05-28 01:02 01:nop对程序语义的影响 对多线程,多进程的程序需要多多 ... -
深入理解javascript中的this
2014-05-27 23:13 0深入理解javascript中的this http://r ... -
关于弱引用
2014-05-27 22:38 564提纲: 1:什么是弱引用 弱引用就是引用他的时候,可以 ... -
C语言深度解析笔记1
2014-05-06 22:51 7151:static修饰变量,因为它在静态区内,函数返回后其仍然 ... -
在centos上折腾 django的部署
2014-03-15 22:41 7752很多事情都是折腾,折腾来折腾去又回到了原点。 ... -
汇编语言笔记
2013-12-28 10:58 7101:寄存器操作 cs寄存器不能用mov指令赋值,需要 ... -
深入理解javascript (二)
2013-05-02 13:26 0javascript是以原型为基础的继承机制,不同于java ... -
深入理解 JavaScript 之基础
2013-04-30 23:07 1571以前总觉得javascript仅 ... -
深入理解javascript (二)
2013-04-30 23:03 1186javascript是以原型为基础的继承机制,不同于jav ... -
计算机中信息的处理
2012-12-28 11:01 1085从接触计 ...
相关推荐
通过将函数指针传递给其他函数,可以在这些函数内部调用我们传入的函数,这在设计模式和事件驱动编程中非常常见。 了解这些概念后,程序员可以更灵活地处理数据和控制程序流程,尤其是在编写系统级或底层代码时。...
C语言中的函数指针可以存储函数的地址,使得函数可以作为参数传递或被其他函数返回。这在回调函数和高阶函数中非常常见。 **6. 变量作用域:** 在函数内部定义的变量只有在该函数内部可见,称为局部变量。全局变量...
函数指针是C语言中的一个强大特性,它允许我们存储函数的地址并像普通变量一样传递。通过函数指针,我们可以动态地决定调用哪个函数,或者将函数作为参数传递给其他函数。例如,可以定义一个通用排序函数`void sort...
下面,我们将深入探讨C语言函数的各个方面,以及如何在实际编程中应用这些知识。 1. **函数定义与声明**: - **函数定义**:定义一个函数包括指定返回类型、函数名和参数列表。例如: ```c int add(int a, int b...
函数指针可以理解为指向函数的指针,而委托是.NET框架中的一种类型安全的函数指针,可以将方法当作参数传递,或者在不同的地方调用。在易语言中,我们可以创建一个事件处理函数,然后将这个函数的地址作为参数传递,...
总结来说,“C语言函数大全”这个资源应该涵盖了函数的各个方面,包括但不限于函数的定义、参数传递、返回值、函数指针、递归、函数优化等。通过对这些例题的学习和实践,学习者能更深入地理解C语言函数的使用,并...
2. **函数指针**:可以指向函数,允许我们传递函数作为参数或者将函数作为其他函数的返回值。 3. **数组指针**:实际上是指向数组首元素的指针,可以用来遍历整个数组。 4. **多级指针**:如`int **p`,指向指针的...
同时,"【例 10】编写一个函数,用于在一个包含 N 个整数的数组中找到第一个质数.cpp"展示了如何使用函数指针来查找数组中的第一个质数。 此外,"【例 5】scanf 使用数组名,用数组名或指针访问数组。.cpp"讨论了...
在C语言中,函数是代码组织的基本单元,它们允许我们将特定的任务封装到可重用的代码块中。`c_handbook.zip`文件提供了关于C语言各种库函数的中文说明,这对于初学者和有经验的开发者来说都是宝贵的资源。以下是一些...
通过指针数组可以访问或操作字符串数组中的各个字符串。 12. 指针和循环结构 在循环结构中,指针可以用来控制遍历数组或字符串的顺序。通过指针的自增或自减操作,可以实现灵活的遍历逻辑。 13. 指针和函数的...
10. 指针的高级用法:包括指针函数、函数指针以及回调函数的概念和使用。 为了帮助学生更好地掌握指针的知识,教学方法应该包括: - 实例演示:通过具体例子演示指针的基本操作,比如如何利用指针访问变量、如何...
在C语言中,指针的使用广泛,包括传递函数参数、动态内存分配以及实现动态数据结构(如链表、队列、二叉树等)。 2. **难点:理解指针数据类型**: 指针本身也是一个数据类型,比如`int *p`声明了一个指针变量p,...
- 函数指针是C语言的一个强大特性,它可以存储函数的地址,使得函数可以作为其他函数的参数或返回值。 8. **递归函数** - 递归函数是调用自身的函数,用于解决具有相同子问题的问题,如`factorial`函数计算阶乘。...
通过图形化的分析,可以清楚地展示在函数调用中,各个变量是如何在不同的作用域和生存期内进行值的传递和变化的。 此外,文章提到多重指针的教学方法,特别是二重指针的概念,这是指针指向另一个指针的指针。二重...
对于函数指针,可以指向一个函数的地址,表示这个函数可以被调用。例如,int (*p)(int)声明了一个指针p,它指向一个接受一个int参数并返回int值的函数。 在实际编程中,分析和理解复杂指针类型是一件比较困难的事情...
C语言中的指针是一个非常核心的概念,它允许...综上所述,指针是C语言中的高级特性,使用它需要对语言的内存管理和类型系统有深入的理解。通过逐步学习和实践,可以掌握指针的各种用法,写出高效且安全的C语言代码。
此外,指针与数组、动态内存分配、函数参数等结合使用时,会带来更高级的编程技巧,如指针数组、指针到指针、void指针等。 接下来,我们来看函数。函数是C++中代码的复用机制,它可以封装特定任务并多次调用。理解...