奥运倒计时: 设为首页 加入收藏
点击进入太平洋安全网首页
论坛登陆 用户名: 密码:
首页 新闻资讯 文章中心 黑客资源 黑客点睛 安全防护 软件下载 动画教程 会员咨询 技术问答 论坛社区
文章 下载 图片
资源  
 您现在的位置: 太平洋安全网 >> 资源 >> 程序设计 >> C语言 >> 正文

C语言高效编程的的四大绝招(1)

作者:放弃    资源来源:网上采集    点击数:    更新时间:2008-3-30
编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。

  第一招:以空间换时间

  计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间。

  例如:字符串的赋值。

  方法A:通常的办法:

  #define LEN 32

  char string1 [LEN];

  memset (string1,0,LEN);

  strcpy (string1,"This is a example!!");

  方法B:

  const char string2[LEN] ="This is a example!";

  char * cp;

  cp = string2 ;

  使用的时候可以直接用指针来操作。

  从上面的例子可以看出,A和B的效率是不能比的。在同样的存储空间下,B直接使用指针就可以操作了,而A需要调用两个字符函数才能完成。B的缺点在于灵活性没有A好。在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序执行的高效率。

  如果系统的实时性要求很高,内存还有一些,那我推荐你使用该招数。该招数的变招--使用宏函数而不是函数。举例如下:

  方法C:

  #define bwMCDR2_ADDRESS 4

  #define bsMCDR2_ADDRESS 17

  int BIT_MASK(int __bf)

  {

   return ((1U << (bw ## __bf)) - 1) << (bs ## __bf);

  }

  void SET_BITS(int __dst, int __bf, int __val)

  {

   __dst = ((__dst) & ~(BIT_MASK(__bf)))   \

   (((__val) << (bs ## __bf)) & (BIT_MASK(__bf))))

  }

  

  SET_BITS(MCDR2, MCDR2_ADDRESS, RegisterNumber);

  方法D:

  #define bwMCDR2_ADDRESS 4

  #define bsMCDR2_ADDRESS 17

  #define bmMCDR2_ADDRESS BIT_MASK(MCDR2_ADDRESS)

  #define BIT_MASK(__bf) (((1U << (bw ## __bf)) - 1) << (bs ## __bf))

  #define SET_B

[1] [2] 下一页

资源录入:放弃    责任编辑:放弃 
  • 上一资源资源:

  • 下一资源资源:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
       推荐文章
    推荐资源Windows 2000 设置Internet连接属性
    推荐资源Windows 2000 建立Internet连接
    推荐资源Windows 2000 浏览器窗口简介
    推荐资源Windows 2000 浏览器功能的增强
    推荐资源Windows 2000 快速使用共享资源
    推荐资源Windows 2000 软件资源共享
    推荐资源Windows 2000 硬件资源共享
    推荐资源Windows 2000 WINS服务器配置
       热门文章
    推荐资源Windows 2000 设置Internet连接属性
    推荐资源Windows 2000 建立Internet连接
    推荐资源Windows 2000 浏览器窗口简介
    推荐资源Windows 2000 浏览器功能的增强
    推荐资源Windows 2000 快速使用共享资源
    推荐资源Windows 2000 软件资源共享
    推荐资源Windows 2000 硬件资源共享
    推荐资源Windows 2000 WINS服务器配置
        本站推荐

    关于我们 | 联系方法 | 招聘信息 | 加入会员 | 诚征代理 | 广告服务 | 欢迎投稿 | 站长信箱 | 友情链接 | 网站地图
    24小时客服:0374-7126138 技术支持:0374-7126138 投诉电话:0374-7967536
    客服QQ:883039 售后QQ:827520 技术QQ:78305152 投稿-商业:576880739
    Copyright 太平洋科技 2003-2007 版权所有 All Rights Reserved
      许可证号:豫ICP备07005385号