转自“李云” 博客:http://yunli.blog.51cto.com/831344/252954
利用编程语言的特性不但能简化程序,而且还能提高程序的执行效率。先看一个使用sizeof()提高程序效率的例子程序,图1是没有使用sizeof()之前的代码,其背景信息需要在此做一个交代。其中,alarm_string变量是定义为长度是255的char数组,而tail_msg定义的是一个指向字符串“,List NOT Complete”的指针。space是为了得到在alarm_string中除去tail_msg所指向字符串的长度后,有多少空间可以用来存放其它的内容,这是因为在某种情况下,需要将tail_msg所指向的字符串拷贝到alarm_string数组的末尾。另外,tail_msg所指向的字符串其内容是不会被更改的。
example.c
00070: #define MAX_STRING_TXT 255
00071: char alarm_string [MAX_STRING_TXT];
00072:
00073: char *tail_msg = ", List NOT Complete";
00074: char space = MAX_STRING_TXT - strlen (tail_msg) - 1;
example.c
00070: #define MAX_STRING_TXT 255
00071: char alarm_string [MAX_STRING_TXT];
00072:
00073: static const char tail_msg [] = ", List NOT Complete";
00074: char space = MAX_STRING_TXT - sizeof (tail_msg);
下面再看另一个使用编程语言特性的例子,原始的例子如图3所示。在143行调用memset()对局部数组变量temp进行置零初始化,显然,由于memset()函数的存在,这段代码每次运行时都得进行memset()函数调用,更好的解决方案如图4所示。
example.c
00141: #define MAX_MSK_OCTET_LEN 64
00142: char temp[MAX_MSK_OCTET_LEN];
00143: memset(temp, 0, sizeof(temp));
example.c
00141: #define MAX_MSK_OCTET_LEN 64
00142: char temp[MAX_MSK_OCTET_LEN] = {0};
本文通过实例展示了如何利用编程语言特性简化程序并提高执行效率。包括使用sizeof()代替strlen()函数,以及如何有效初始化数组变量以减少不必要的函数调用和运算。此外,文章还探讨了在不同场景下合理应用编程语言特性的策略,旨在提升程序员的专业性。

被折叠的 条评论
为什么被折叠?



