基本数据类型 (代码大全 第十一章)

11.1 常数

避免" 奇异数"(magic numbers)。“奇异数”指的是出现在程序中间的不加解释的常数。


在需要时可以使用常数“0”或“1”


采取预防被"0" 除的措施


明显进行类型转换


避免混合类型比较


注意编译程序的警告


优秀的程序员总是力争消除所有的编译程序

警告信息。让编译程序去查错毕竟比自己干容易得多。



11.2 整型数

检查整型相除


检查整型是否溢出


检查中间结果是否溢出



11.3 浮点数

不要在数量级相差太大的数之间进行加减运算


避免相等比较


防止舍入误差




11.4 字符和字符串

避免“奇异字符和字符串”


警惕边界错误


11.4.1 C语言字符串


要清楚字符串指针和字符数组之间的区别


要注意任何含有字符串且又带有引号的表达式


使用命名约定来表示变量究竟是字符数组还是字符串指针


将字符串的长度说明为CONSTANT+1


把字符串初始化为“0”以避免无限长字符串


C中用字符数组来代替指针


strncpy() 代替strcpy()以避免无限长字将串


strcpy() strcmp()之类的子程序是很危险的 ,因为只有当遇到零结束符时它们才会停止。而strncpy() strncmp()相对来说,则要安全得多 ,因为它们把某一参数当作最大长度,因此即使某些字符率是无限长的,你的调用函数也不会持续不断地永远进行下去。 



11.5 逻辑变量

使用逻辑变量来说明程序


使用逻辑变量来简化复杂的判断


如果必要的话,建立自己的逻辑类型



11.6 枚举类型

使用枚举类型来提高可读性


使用枚举类型来提高可靠性


使用枚举类型来改善易修改性


用枚举类型来代替逻辑变量


检查无效值


把枚举类型的第一个入口保留为无效的



11.6.1 如果所用的语言不支持枚举类型

许多编译程序都把枚举类型中第一个元素的值赋为零。把被赋为 0值的那个元素说明为无效,可以帮助找出不恰当初始化的变量,因为当它们失效时更容易为0 



11.7 命名常量

在数据说明中使用命名常量


避免常数值


使用全局变量来模拟命名常量


一致地使用命名常量



11.8 数 组

确保所有的数组下标都没有越界


把数组当作顺序性结构 许多计算机科学家建议决不要随机地对数组进行存取。


检查数组边界


对于多维数组,要保证其下标的顺序是正确的


警惕下标的错误交叉


使数组的长度留有一定裕度


C 中,使用 ARRAY_LENGTH( )宏来处理数组




11.9 指 针

11.9.1 理解指针 

每个指针包括两部分:  内存存储单元及对这个存储单元中内容的解释。     


内存中的存储单元

内存中的存储单元就是地址,通常是用十六进制数来表示的。


怎样解释存储单元中的内容


解释存储单元中内容的基础是指针的基本类型。如果指针指向一个整数,它的真实含义 是编译程序把由指针提供的存储单元解释为一个整数。当然,可能会出现整数指针、字符串 指针和浮点数指针同时指向同一个存储单元的情况,而此时只有一个指针正确地解释了该 单元中的内容。


11.9.2 关于使用指针的几点建议

在使用指针之前对它进行检查

把指针操作独立在子程序中

在使用变量之前应先检查一下这一变量

使用标记字段来查找错误内存

使用显示冗余技术

释放指针后,把它设为 NULLNIL

使用额外的指针变量以增加清晰性。不管怎样,都不要吝于供给指针变量。

简化复杂的指针表达式

编写跟踪指针存储单元的子程序

按正确顺序释放链表中的指针

编写输出指针地址的子程序

在内存中划分出一段空间作为“降落伞”

使用非指针技术


11.9.3 C 中的指针

应使用显式指针类型而不是缺省类型

避免强制类型转换。

遵守参数传递的星号规则。

使用 sizeof()来确定内存存储单元中变量的规模。

使用 sizeof()不会影响性能,因为它的计算是在编译过程中进行的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值