8360|19

50

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

C语言编程技巧总结 [复制链接]

 

在日常编程中,可能实现的功能都是一样的,但是别人就是要写的快,写的好,而且同样代码执行效率还高。究其原因,就是别人编写的代码多,掌握了更多的技巧性的东西,从而无论从编码效率还是代码的执行效率上都更优。现将日常编程中使用到的一些常规技巧进行简单总结。

1、从循环开始

1)while(--n>=0)与while(n-->0)

在大多数C语言实现中,--n >=0 至少与等效的n-- >0 一样快,大多数情况下前者更快。

主要因为第一个表达式首先从n中减去1然后将结果与0比较;而第二个表达式首先保存n,从n中减去1之后比较保存值与0的大小,这中间多了一个保存的时间,从而前一个表达式更快。

注意:这样的循环中,尽量不使用unsigned类型,否则前者会出现无限循环情况。

2)多重循环处理

对于多重循环,如果可能,应将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。

3)for循环

对于for语句的循环控制变量的取值采用“半开半闭区间”写法,用此方法更加直观。

不能在for循环体内修改循环变量,防止循环失控。

循环要尽可能的短,使代码显得清晰。若太长,看是否真的必须放入循环中,若必须,可以将这些代码封装成一个子函数,循环中只需调用子函数即可。

同时,把循环嵌套控制在3层以内。

2、函数参数

在设计函数时,通常将目的参数放在前面,源参数放在后面。若可能,通过IN、OUT这样的宏定义来标注参数输入输出。

如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。

3、函数中内存处理

1)在函数中分配的内存,在函数退出之前要释放

2)return语句不可返回指向“栈内存”的指针或者引用,因为该内存在函数体结束时被自动销毁。

4、时间效率提升

1)调用if语句时,优先处理正常情况,再处理异常情况。

首先,可以使得正常情况的执行代码清晰,那些不常发生的异常情况不会遮掩了正常的执行路径。

其次,由于每进行一次if语句必然会有比较过程存在,而正常情况应该是发生的比较多的情况,那么可以减少在使用过程中比较的调用。设计时一定不要颠倒主次。

2)使用switch,case时,也要注意case的顺序,尤其是比较多种类的情况下,发生概率高的放在前面,低的放在后面,可以有效的减少不必要的比较过程。若没有重要性区分,按照字母排列顺序或数字大小排列也可。

原文地址:http://blog.sina.com.cn/s/blog_686ee2910102w1yv.html


此帖出自编程基础论坛

最新回复

充分利用指针进行数据的处理,可以提供运行效率,指针是C精华所在   详情 回复 发表于 2023-10-27 08:33
点赞 关注(3)
个人签名微信公众号:IT小咖坊
 

回复
举报

216

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
不錯,
此帖出自编程基础论坛

点评

谢谢支持,只是慢慢总结的一些文档,以后多和大家分享。  详情 回复 发表于 2016-2-18 09:31
 
 
 

回复

6040

帖子

203

TA的资源

版主

板凳
 
有道理,顶一个!
此帖出自编程基础论坛

点评

谢谢支持,只是慢慢总结的一些文档,以后多和大家分享。  详情 回复 发表于 2016-2-18 09:31
 
 
 

回复

684

帖子

1

TA的资源

一粒金砂(高级)

4
 
谢谢分享。。。
此帖出自编程基础论坛
 
 
 

回复

793

帖子

8

TA的资源

纯净的硅(中级)

5
 
                                                              谢谢楼主分享
此帖出自编程基础论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

6
 

谢谢支持,只是慢慢总结的一些文档,以后多和大家分享。
此帖出自编程基础论坛
 
个人签名微信公众号:IT小咖坊
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

7
 
lcofjp 发表于 2016-2-17 21:34
有道理,顶一个!

谢谢支持,只是慢慢总结的一些文档,以后多和大家分享。
此帖出自编程基础论坛
 
个人签名微信公众号:IT小咖坊
 
 

回复

361

帖子

5

TA的资源

一粒金砂(高级)

8
 
介个好有用!,果断复制成笔记,想要提升自己,真的需要注意掌握这些细节
此帖出自编程基础论坛

点评

好的笔记可以相互分析,有道云笔记地址:  详情 回复 发表于 2016-2-18 13:48
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

9
 
dong2213dong 发表于 2016-2-18 10:18
介个好有用!,果断复制成笔记,想要提升自己,真的需要注意掌握这些细节

好的笔记可以相互分析,有道云笔记地址:itxkf2016@163.com
此帖出自编程基础论坛
 
个人签名微信公众号:IT小咖坊
 
 

回复

361

帖子

5

TA的资源

一粒金砂(高级)

10
 
没用过有道云笔记,不晓得使用方法,我都是看到想记得就直接copy到word中
此帖出自编程基础论坛
 
 
 

回复

297

帖子

0

TA的资源

一粒金砂(中级)

11
 
有道理
此帖出自编程基础论坛
 
 
 

回复

7815

帖子

56

TA的资源

裸片初长成(中级)

12
 
我在准备面试的时候,发现收集一些面试题,有时可以在千篇一律的东西里发现一些不错的东西。
这里面就隐藏着很多容易忽略的东西。
此帖出自编程基础论坛
 
个人签名

强者为尊,弱者,死无葬身之地

 
 

回复

7

帖子

0

TA的资源

一粒金砂(初级)

13
 
需要这样的好文章
此帖出自编程基础论坛
 
 
 

回复

253

帖子

1

TA的资源

一粒金砂(高级)

14
 
"而第二个表达式首先保存n,从n中减去1之后比较保存值与0的大小,这中间多了一个保存的时间,从而前一个表达式更快。"这句话能否解释一下????先比较再自减就行了,为什么要保存??
此帖出自编程基础论坛
 
 
 

回复

18

帖子

0

TA的资源

一粒金砂(初级)

15
 
谢谢楼主的分享,内容特别特别好,学习到了。
此帖出自编程基础论坛
 
 
 

回复

28

帖子

0

TA的资源

一粒金砂(中级)

16
 
多写程序,理解C语言真正内含
此帖出自编程基础论坛
 
 
 

回复

17

帖子

0

TA的资源

一粒金砂(初级)

17
 
点赞
此帖出自编程基础论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

18
 
好东西,收藏了
此帖出自编程基础论坛
 
 
 

回复

54

帖子

0

TA的资源

一粒金砂(初级)

19
 
谢谢楼主分享,。
此帖出自编程基础论坛
 
 
 

回复

227

帖子

0

TA的资源

一粒金砂(高级)

20
 

充分利用指针进行数据的处理,可以提供运行效率,指针是C精华所在

此帖出自编程基础论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表