指针之美
来源:互联网 发布:arp 添加网关mac 编辑:程序博客网 时间:2024/06/05 17:02
简介
众所周知,C语言的精髓是指针,汇编的间接寻址,C#的委托都可以看成是指针,包括C++的继承,多态的底层实现,也都是基于指针的,因此我们可以把指针可以看成一种编程思想吧,从汇编到C,再到C++,Java,C#,我们看出计算机编程语言的一条演进的线索-指针,为什么会这样发展呢,大型软件系统,对于指针的使用要求很高,搞不好就会出现指针越界,空指针的错误,有些公司,还明文规定禁止使用指针,因此如果你有一种比较好的方法,让大家方便简单的使用指针,说不定你可以发明一种编程语言。但是有些地方,使用指针,使用一次之后,你就会上瘾,这就是指针之美. 接下来举两个例子来说明。
数据类型转换
一个项目,把通过串口或是网口获取的数据缓冲到一个数组里面,这个数组的第10,11,12,13个字节表示int类型的参数,不使用指针获取参数的方法如下:
nParam = (buf[10]<<24)+(buf[11]<<16)+(buf[12]<<8)+buf[13];
使用指针获取参数:
nParam = *(int* )&buf[10];
没有对比,就没有伤害吧,效率你自己评估吧!
函数指针
函数指针的使用无处不在,泛型编程,消息事件机制,C#的委托,C++的虚函数,都是基于函数指针的。
一个例子:需要在Main函数里面循环调用50函数:
void Main(){ while(1) { fun1(); fun2(); fun3(); . . . fun50(); sleep(10); }}
这个看起来很繁琐,函数指针用一个for循环就可以搞定:
void Main(){ while(1) { for(i=0;i<50;i++) { (*ArrayFun[i])(); sleep(10); } }}
这个是不是看起来要简单,整洁一点,函数指针在C语言中,可以嵌入到结构体中,实现数据,和对数据的操作封装到一起.
1 0
- 两个指针之美
- 指针之美
- C# 指针之美
- C# 指针之美
- C# 指针之美
- C# 指针之美
- C# 指针之美
- C# 指针之美
- C# 指针之美
- 指针之美
- 【转】C# 指针之美
- 两个指针之美(笔试)
- Qt之美(一):d指针/p指针详解
- Qt之美(一):d指针/p指针详解
- Qt之美(一):D指针/私有实现
- Qt之美(一) D指针/私有实现
- Qt之美(一):D指针/私有实现
- 结构之美:单链表的头结点与头指针
- LeetCode 61. Rotate List
- 机器学习----降维与度量学习(k邻近学习)
- 华为portal2.0协议封装
- Linux下C++,matlab混合编程
- python 字符集编码检测(转载修改)
- 指针之美
- servlet实现form表单的文件上传
- recyclerView的基础使用
- 线程与进程
- Android第三方接入 Udesk
- 带进度条的文件上传jquery
- little kernel分析 [LK]
- GC 算法与种类,
- 安卓上面遇见的坑