找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 90|回复: 1
打印 上一主题 下一主题

C语言编程技巧总结

[复制链接]

157

主题

559

帖子

1198

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1198
跳转到指定楼层
1#
发表于 2016-5-30 17:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在日常编程中,可能实现的功能都是一样的,但是别人就是要写的快,写的好,而且同样代码执行效率还高。究其原因,就是别人编写的代码多,掌握了更多的技巧性的东西,从而无论从编码效率还是代码的执行效率上都更优。现将日常编程中使用到的一些常规技巧进行简单总结。3 _( s1 e$ w# x2 i, T6 M! _) K
1、从循环开始7 [/ {- S* i3 D; V
1)while(--n>=0)与while(n-->0)
. |4 I& ?  ]$ \5 ~5 o  o/ l在大多数C语言实现中,--n >=0 至少与等效的n-- >0 一样快,大多数情况下前者更快。
9 }3 q0 ]5 L4 J6 ^; I7 r主要因为第一个表达式首先从n中减去1然后将结果与0比较;而第二个表达式首先保存n,从n中减去1之后比较保存值与0的大小,这中间多了一个保存的时间,从而前一个表达式更快。
" `! C; |% M% {; ~注意:这样的循环中,尽量不使用unsigned类型,否则前者会出现无限循环情况。
0 S8 c6 B7 S( P" b$ Q9 S2)多重循环处理8 Y) U1 q9 p  O8 D7 @
对于多重循环,如果可能,应将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。7 Y- }# S" _' w4 z2 W& e  `
3)for循环
) @0 c# l9 V% O8 _对于for语句的循环控制变量的取值采用“半开半闭区间”写法,用此方法更加直观。
3 w1 |" w7 F- f8 L/ X% U6 x不能在for循环体内修改循环变量,防止循环失控。
4 g3 I) Z# u+ }: _6 V( a# W循环要尽可能的短,使代码显得清晰。若太长,看是否真的必须放入循环中,若必须,可以将这些代码封装成一个子函数,循环中只需调用子函数即可。
$ d: o' L# M" E同时,把循环嵌套控制在3层以内。  j# z3 x2 ], x* n
2、函数参数
8 O* ~- q1 r5 s7 w3 Q' |; |8 Q在设计函数时,通常将目的参数放在前面,源参数放在后面。若可能,通过IN、OUT这样的宏定义来标注参数输入输出。) }2 j, m4 e$ @' k
如果参数是指针,且仅作输入用,则应在类型前加const,以防止该指针在函数体内被意外修改。3 s6 X. b7 b8 q: I0 F1 G& G) @
3、函数中内存处理
: K  A6 f( V. E6 Y0 g1)在函数中分配的内存,在函数退出之前要释放) G/ I( e$ W: @) y( j: C
2)return语句不可返回指向“栈内存”的指针或者引用,因为该内存在函数体结束时被自动销毁。
4 z  X  y# N; ~' s9 j- ^% o4、时间效率提升
8 r: O8 k9 K- T; |  }1 v1)调用if语句时,优先处理正常情况,再处理异常情况。# h" r3 n5 w. g* h, U
首先,可以使得正常情况的执行代码清晰,那些不常发生的异常情况不会遮掩了正常的执行路径。5 u6 l* T! F1 v& w+ ?9 M
其次,由于每进行一次if语句必然会有比较过程存在,而正常情况应该是发生的比较多的情况,那么可以减少在使用过程中比较的调用。设计时一定不要颠倒主次。
  N5 ]" H: y- l5 z# ~0 p" v( w, G2)使用switch,case时,也要注意case的顺序,尤其是比较多种类的情况下,发生概率高的放在前面,低的放在后面,可以有效的减少不必要的比较过程。若没有重要性区分,按照字母排列顺序或数字大小排列也可。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

165

主题

600

帖子

1289

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1289
2#
发表于 2016-5-31 15:08 | 只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-13 03:50 , Processed in 0.058771 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表