常变量声明的方法

Topic:常变量声明的方法(作者:Baiduluckyboy)
//------------------------------------------------------------------------------------------------------------------------------

// Topic:常变量声明的方法(作者:Baiduluckyboy)

// 作者:Baiduluckyboy(wangyuluyulu@126.com) 

// 论坛账号:Baiduluckyboy (经常在CSDN出没)

// 版权:解放军电子工程学院Baiduluckyboy(wangyuluyulu@126.com

// 发布日期:2010-09-16

// 最后修改:

// 注意事项:未经作者同意,商业网站不能转载,并且不得在转载的时候擅自修改、删除文章的任何部分

//-------------------------------------------------------------------------------------------------------- 

常变量的声明的方法

为了提高程序的可阅读性与可维护性,ANSI C允许用户命名常量named constant,声明为const的变量)。

当它被初始化之后,它的值便不能改变,因此const主要用于声明其值不会修改的变量。

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的优势仅限定在声明常量上。

    注意const除了可以修饰只读变量之外,还可以用于修饰数组、指针、函数的参数与函数的返回值,详见后续相关章节的描述。 

5. 标识符

ANSI C规定标识符只能由字母、数字和下划线3种字符组成,且第1个字符必须为字母或下划线。比如:

__GucTask0

注意C是区分大小写字母的语言,也就是说,由相同字母组成的字符,如果大小写不同,就会被看做不同的字符。比如,命名agesum的变量与AgeAGE以及Sum的变量就是不同的变量。一般来说,变量名常用小写字母来表示,比较符合人们的阅读习惯。

虽然ANSI C并没有规定标识符的长度,但各个编译器都有自己的规定,比如,Turbo C则允许变量名最多不超过32个字母。

    关键知识点:变量的声明与定义   

l         声明与定义的区别

    广义地说,声明包含定义,但并非所有的声明都是定义。对于“int lower_limit;”来说,它既是声明又是定义;而对“extern lower_limit;”来说,它是声明不是定义。

“声明”仅仅告诉编译器变量名的值的类型而已,不会生成目标代码,当然也不会给它分配存储空间,更不会增大可执行程序的体积。由于声明并不分配存储空间,因此同一个声明可以在程序中多次出现。它的位置可在执行代码之外,也可在执行代码里面。

而“定义”不仅要告诉编译器变量名的值的类型,而且还要给变量分配存储空间。既然在定义变量时就已经建立了存储空间,那么变量的定义只能出现一次,且它的位置在所有执行代码之外。

    由于系统是根据外部变量的“定义”来分配存储空间的,因此对外部变量的初始化只能在“定义”时进行,不能在“声明”中进行,而“声明”则是告诉编译器,该变量已经存在。 

l         变量与函数的多源文件共享

当希望在多个源文件中共享变量或函数时,需要确保定义与声明的一致性。最好的安排是在某个相关的“.c”文件中定义,然后在“.h”文件(头文件)中进行外部声明,在需要使用的时候,只要包含对应的头文件即可。定义变量的“.c”文件也应该包含该头文件,以便编译检查定义和声明的一致性。    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值