[求助] C语言什么时候该使用指针才能达到以空间换时间的目的

ly471089608   2013-3-22 19:51 楼主
我在程序优化的时候,有时候感觉程序代码太长,单片机有时候有问题,想优化一下,但是用指针代替这些参数,没感觉到程序有优化,请各位大神指点一下,指针该如何使用,以及什么时候使用最好!

回复评论 (6)

回复 楼主 ly471089608 的帖子

程序rom空间占用,ram占用,执行开销这几个指标不同,也不相关理解不?

你得先分析...程序太长的话用指针优化不了.函数方式可以减少内存占有但不会减少开销.

指针和优化没太大关系,你先看看优化开关开了没...其次是程序的结构和关键的算法对开销影响大.
你可以打开仿真先看看最耗时的哪部分能不能优化...

[ 本帖最后由 huo_hu 于 2013-3-23 10:43 编辑 ]
点赞  2013-3-23 10:38
引用: 原帖由 ly471089608 于 2013-3-22 19:51 发表
我在程序优化的时候,有时候感觉程序代码太长,单片机有时候有问题,想优化一下,但是用指针代替这些参数,没感觉到程序有优化,请各位大神指点一下,指针该如何使用,以及什么时候使用最好!

优化,可以是编译器来做,也可以是程序员来做,但一般这两种方式是不冲突的。

你说代码长这个问题,应该是用编译器来优化,或者是采用高效稳定的算法来做吧。

用指针代替参数,我猜你是想说用指针代替结构体整体赋值的传参是吧。不过这个和上面那个优化是没有多大关系的。所以感觉你其实不是问的一个问题,
但表述形式又像是在说一个问题,似乎在误导别人哦。

传参的时候,如果参数很多,一个比较好的方式就是采用指针传参的方式,给出结构体的首地址,也就是它的指针,传参的时候就不会把结构体中的值依次复制到临时变量中,这样减少了复制的时间,也减少了开栈的时间(当然这个时间一般占的分量不大),当然就减少的了时间和空间的开销啊,特别是这个结构体很大的时候,效果很明显的。当然也会有一定的风险,那就是你在这个被调函数中修改了指针指向区的值,返回主调函数后,这个值就被修改了,不再是调用前的值了。

指针什么时候用好?

这个问题不是几句话说的清楚的,你知道的,C/C++这门语言的精华就是指针,用的好不得了,用不好也不得了。当然这两个不得了是不一样的,呵呵。

具体什么时候用,怎么用。需要自己多看书、多学习、多实践、多验证、多总结。
点赞  2013-3-23 11:17
如果你真想好好学一下C/C++的话,指针是避不过去的部分,建议你看看这本书,讲C指针讲的很细致,内容难度也比较适中。
点赞  2013-3-23 11:25

回复 4楼 lr2131 的帖子

谢谢哈,也就是说,程序优化主要是在选择算法上,以及程序的结构上来。指针对于处理一些算法的用法上有一定得帮助,和一些函数的值得传递!是这样的吗?
点赞  2013-3-24 22:01
引用: 原帖由 ly471089608 于 2013-3-24 22:01 发表
谢谢哈,也就是说,程序优化主要是在选择算法上,以及程序的结构上来。指针对于处理一些算法的用法上有一定得帮助,和一些函数的值得传递!是这样的吗?

是你这样理解的。
C语言用于描述高效的算法,对于编译器来说比较容易实现和优化。
点赞  2013-3-24 22:33

回复 楼主 ly471089608 的帖子

不用函数传参数,改成全局量,就是用空间换时间咯
点赞  2013-3-25 08:22
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复