常变量的声明

由于变量的定义不是可执行代码,因此要求局部变量的定义必须位于用“{}包围的程序块”的开头,即在可执行代码的前面。

ANSI C规定:可以使用const关键字声明常量,修饰符const可以用在类型说明符前,也可以用在类型说明符后。比如:

int  const   MAX_LENGTH = 78;                   // 命名常变量的最佳方式是使用大写字母

const   int  MAX_LENGTH = 78;                    // MAX_LENGTH的初值为78

虽然const修饰MAX_LENGTH的值是常量,而实际上MAX_LENGTH却是一个读变量编译器仅给出了与只

读变量MAX_LENGTH对应的内存地址,却并没有为只读变量MAX_LENGTH分配存储单元,而是将它们保存在符号表中,在编译时直接进行替换优化。因此使用const修饰常变量,可以节省空间,避免了不必要的内存分配,而且执行效率更高。 

 既然使用const也可以定义常量,那么它与符号常量到底有什么区别呢?

 由于const定义的常量有数据类型,因此编译器会对用const声明的只读变量进行类型校验,以减少出错的几率;虽然可以使用#define指令定义符号常量,但它在预编译进行字符替换之后,符号常量就不存在了,因为#define宏定义的立即数是没有类型的。很多开发环境只能调试const声明的常量,而不支持#define。由此可见,const#define声明常量更有优势。因此const的引入不仅消除预编译指令的缺点,而且继承了预编译指令的优点。

  虽然在很多时候const#define的优化,但有时#defineconst有优势,因为#define不仅声明常量,而且还可以声明“带宏的参数”,这是const无法做到的,所以说const相对于#define的优势仅限定在声明常量上。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值