等级考试二级C专家编程读书笔记(上)

文章作者 100test 发表时间 2007:04:06 21:24:08
来源 100Test.Com百考试题网


计算机等级考试训练软件《百宝箱》

  1、尽量不要在你的代码中使用无符号类型,以免增加不比要的复杂性。尤其是不要仅仅因为无符号书不存在负值(如年龄、国债)而用它来表示数量。尽量使用int那样的有符号类型,这样在涉及升级混合类型的复杂细节时,不必担心边界情况(如-1被翻译为非常大的正数)。只有在使用位段和二进制掩码时,才可以用无符号数,应该在表达式中使用强制类型转换,使操作数均为有符号或者无符号数。

  2、这也是为什么C 语言令人失望的原因:它对C语言中存在的一些最基本的问题没有什么改进,而它对C语言最重要的扩展(类)却是建立在脆弱的C类型模型上。

  3、看一段代码:
int main(void)
{
int pa=0.
char * avarsc[] =
{
"color monitor",
"big disk",
"Cray"
"on-line drawing routhines",
"mouse",
"keyboard",
"power cables",
}.
char ** pp.
pp = avarsc.

printf("%s\n", avarsc[2]). // output Crayon-line drawing routhines
printf("%s\n", *(pp )). // output big disk
scanf("%d", pa).
return 1.
}
  注意字符串数组的定义,最后那个逗号,还有"Cray"后头没有逗号其实avarsc是个字符指针的指针。
  曾经写过一个这样错误的代码,要为一个字符串: "" 申请空间,应该是STRLEN("\"\"")却写成了STRLEN(""""),编译没有错误,也就没有注意,在后来走查代码的时候,发现了错误的地方,多亏为它多申请了不少空间,不然这又是个难以察觉的内存错误。

  4、全局变量由C编译程序在动态区之外的固定存储区域中存储。当程序中多个函数都使用同一数据时,全局变量将是很有效的。然而,由于三种原因,应避免使用不必要的全局变量:
  ①不论是否需要,它们在整个程序执行期间均占有存储空间。
  ②由于全局变量必须依靠外部定义,所以在使用局部变量就可以达到其功能时使用了全局变量,将降低函数的通用性,这是因为它要依赖其本身之外的东西。
  ③大量使用全局变量时,不可知的和不需要的副作用将可能导致程序错误。如在编制大型程序时有一个重要的问题:变量值都有可能在程序其它地点偶然改变。

  5、在编译时分配存储空间的变量称为静态存储变量,定义的静态存储变量无论是做全程量或是局部变量,其定义和初始化在程序编译时进行。作为局部变量,调用函数结束时,静态存储变量不消失并且保留原值。
  补充:对于静态全局变量,主要是为了保证唯一性。
  补充:关于static的三点正确见解
  A、若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;
  B、若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;
  C、设计和使用访问动态全局变量、静态全局变量、静态局部变量的函数时,需要考虑重入问题;



相关文章


二级C宏--智者的利刃,愚者的恶梦(下)
二级C宏--智者的利刃,愚者的恶梦(中)
等级考试二级C专家编程读书笔记(下)
等级考试二级C专家编程读书笔记(上)
全国计算机等级考试上机操作的真实环境[1]
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛