实现C语言高效编程的四大秘技

引言:

编写高效简洁的C语言代码,是许多软件工程师追求的目标。本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教。

第1招:以空间换时间

计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第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:

时间: 2024-11-16 04:57:59

实现C语言高效编程的四大秘技的相关文章

C语言高效编程的几招小技巧

  这篇文章主要介绍了C语言高效编程的几招小技巧,本文讲解了以空间换时间.用数学方法解决问题以及使用位操作等编辑技巧,并给出若干方法和代码实例,需要的朋友可以参考下 引言: 编写高效简洁的C语言代码,是许多软件工程师追求的目标.本文就工作中的一些体会和经验做相关的阐述,不对的地方请各位指教. 第1招:以空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招--以空间换时间. 例如:字符串的赋值. 方法A,通常的办法: 代

c语言初级编程问题 computing powers of

问题描述 c语言初级编程问题 computing powers of computing powers of n ? Input a number N ? Output powers of N using the while statement ? 10 outputs ? Ex) 解决方案 #include <stdio.h> int main() { int n = 1; printf("input number : "); scanf("%d",

《C++面向对象高效编程(第2版)》——1.12 OOP 范式和语言

1.12 OOP 范式和语言 C++面向对象高效编程(第2版)数据抽象.封装和继承层次都是面向对象编程范式的基本概念.它们不是个别语言的专属特性,任何声称支持OOP的语言都必须支持这些范式.此外,对学习这些概念感兴趣的人不必担心特定的语言,完全可以从总体上理解这些概念(这样做甚至更好),不要将学习的重点放在钻研支持某一特性的语言语法上.一旦设计者或程序员理解了这些概念,无论学习哪一门语言的语法都非常轻松.这类似于驾驶汽车,一旦你掌握了如何驾车以及了解其中的组件如何工作,就可以把车开到任何地方--

《MySQL高效编程》一一1.4 SQL语言

1.4 SQL语言 MySQL高效编程在操作数据库时,终端用户向数据库发出命令,指定处理内容.这个以字符串的形式存在的命令被称为查询(Query).例如,创建表时使用的"CREATE TABLE",插入数据时使用的"INSERT INTO"等. 编写查询时的规则就是称为SQL(Structured Query Language)的语言.直译为"构造化的,查询用的语言".总之,SQL是对数据库进行查询用的语言,所有的数据库中都会用它,当然MySQL

我所偏爱的 C 语言面向对象编程范式

我所偏爱的 C 语言面向对象编程范式 面向对象编程不是银弹.大部分场合,我对面向对象的使用非常谨慎,能不用则不用.相关的讨论就不展开了. 但是,某些场合下,采用面向对象的确是比较好的方案.比如 UI 框架,又比如 3d 渲染引擎中的场景管理.C 语言对面向对象编程并没有原生支持,但没有原生支持并不等于不适合用 C 写面向对象程序.反而,我们对具体实现方式有更多的选择. 大部分用 C 写面向对象程序的程序员受 C++ 影响颇深.企图用宏模拟出一个常见 C++ 编译器已经实现的对象模型.于我愚见,这

《C++面向对象高效编程(第2版)》——4.2 无用单元收集问题

4.2 无用单元收集问题 C++面向对象高效编程(第2版) 在我们讨论无用单元收集1(garbage collection)之前,先了解一下何为无用单元(garbage),何为悬挂引用(dangling reference). 4.2.1 无用单元 所谓无用单元(garbage),是一块存储区(或资源),该存储区虽然是程序(或进程)的一部分,但是在程序中却不可再对其引用.按照C++的规定,我们可以说,无用单元是程序中没有指针指向的某些资源.以下是一个示例: main() { char* p =

《C++面向对象高效编程(第2版)》——4.6 对象赋值的语义

4.6 对象赋值的语义 C++面向对象高效编程(第2版) 赋值与复制的操作非常类似.在C++中,绝大多数的复制操作都由语言隐式调用(当对象按值传递或按值返回时).当通过现有对象创建新对象时,也进行了复制操作(但不是很频繁).与复制相反的是,赋值是必须由程序员显式调用的操作.然而,在Eiffel和Smalltalk中,赋值和复制操作都由程序员显式调用.这也是基于值的语言与基于引用的语言之间的区别. 在C++中,对于对象和基本类型赋值都具有相同的含义.把基本类型变量赋值给另一个(兼容的)基本类型变量

《C++面向对象高效编程(第2版)》——2.30 has-a关系的重要性

2.30 has-a关系的重要性 C++面向对象高效编程(第2版) "has-a"关系(也称为关联.聚集.包含.组合)是在OOD(面向对象设计)中频繁使用的重要关系.但是,许多设计者和程序员都没有很好地理解其相关性,从而导致复杂僵化的设计和不必要的继承. 在OOD阶段,软件的复用主要通过两种方式完成:继承和包含.它们各有优缺点.优秀的设计者了解它们的局限性.优点和代价,可以灵活自如地应用它们.继承将在第5章.第6章以及第二部分的第12章中详细讨论. 包含是一项强大的设计技术,它比继承更

我的高效编程秘诀

        高效编程.高效学习.高效工作.高效生活         高效的意思是指在相同或更短的时间里完成比其她人更多的任务,而且质量与其她人一样或者更好.用英文来说就是write less,do more,这是程序永远的主题,在我们日常编程中一段代码经常复用的时候我们会进行代码封装,借助一些工具来快速定位错误这些都有利于提高我们编程的效率.今天和小伙伴们聊聊高效编程的秘诀,其实不仅仅是高效编程的秘诀,更是高效学习.生活和工作的秘诀,因为小编感觉编程就如同人生一样,一样的丰富多彩,一样的璀璨