C#委托与C语言函数指针及函数指针数组
2015-12-20 23:05
295 查看
C#委托与C语言函数指针及函数指针数组
在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托。
其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数。
在C语言中函数指针的申明如下:
在C语言中函数指针数组申明如下:
在函数中作为参数传递:
虽说在C#里没有指针(实际上是有的),但深入理解指针的概念与用法对C#的学习还是很有用的。
在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托。
其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用的时候通过指针访问这个函数。
在C语言中函数指针的申明如下:
//可以理解为申明一个指着变量 Func ,它的类型是 返回Type(可以为 void )类型的参数,接收 (Type one,Type two,...)类型的 //参数(可以不接受参数)。 Type *Func(Type one,Type two,...)
在C语言中函数指针数组申明如下:
//类似于上面的理解,申明一个Func 指针数组,它的长度为num ,它的类型为 int ()(Type one,Type two,...)类型 Type (*Func[num])(Type one,Type two,...)
在函数中作为参数传递:
//在使用函数 TestFunc 时,需要传一个具有相同的类型申明( Type ()(Type one,Type two,...) )的函数过来,这 //样就可以使得函数更灵活,能根据具体的需求传入相应的函数来使得代码的重用性增加。 Type TestFunc(Type value1,Type value2,Type *Func(Type one,Type two,...)) { Func(value1,value2,...); }
虽说在C#里没有指针(实际上是有的),但深入理解指针的概念与用法对C#的学习还是很有用的。
相关文章推荐
- more effinctive c++(operator+=)
- 基于C++高性能、跨平台日志模块的分析与实现
- 魔兽世界之二:装备(C++程序设计第5周)
- C++ 实现单向链表
- C++实现双向链表的创建,插入,修改,删除
- 继承与派生编程题1(C++程序设计第5周)
- C++临时变量什么时候销毁
- 一起talk C栗子吧(第七十八回:C语言实例--创建进程)
- C++学习笔记-容器
- 初步C++: g++: error: CreateProcess: No such file or directory
- windows下sublime编译调试c++的配置代码
- libc++和libstdc++
- C++模板类之理解编译器的编译模板过程
- 有关C语言中输入语句的问题
- C++中的typedef
- C++类型转换
- C++类型转换
- Effective C++ 笔记目录
- c++学习笔记
- 设计模式系列(十三)迭代器模式(Iterator Pattern)