C++:变量
2015-09-24 21:56
295 查看
1. 变量的命名习惯
变量命名有许多被普遍接受的好习惯,遵循这些习惯可以提高程序的可读性。变量名一般用小写字母。例如,通常会写成 index,而不写成 Index 或 INDEX。
标识符应使用能帮助记忆的名字,也就是说,能够提示其在程序中的用法的名字,如 on_loan 或 salary。
包含多个词的标识符书写为在每个词之间添加一个下划线, 或者每个内嵌的词的第一个字母都大写。例如通常会写成 student_loan 或
studentLoan,而不写成 studentloan。
命名习惯最重要的是保持一致。
初始化和赋值是不同的。初始化变量有两种形式: 复制初始化和直接初始化。
直接初始化则是把初始化式放在括号中,如:int ival(1024);
复制初始化语法用等号(=),如:int ival = 1024;
注意:
对内置类型来说,复制初始化和直接初始化几乎没有差别。
对类类型的对象来说,有些初始化仅能用直接初始化完成。
内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成 0,在函数体里定义的内置类型变量不进行自动初始化。
建议每个内置类型的对象都要初始化。
另外
用extern声明变量,如
extern int i;
当然,程序中变量可以声明多次,但只能定义一次,而且在使用变量之前必须定义或声明变量。
任何在多个文件中使用的变量都需要有与定义分离的声明。在这种情况下,一个文件含有变量的定义,使用该变量的其他文件则包含该变量的声明(而不是定义)。
2. const 限定符
程序中,定义一个变量来代表某一常数,方便后续的修改,但这个变量是可以被有意无意地修改的,const 限定符提供了一个解决办法,它把一个对象转换成一个常量。如const int bufSize = 512;
这样一来,变量就是不可修改的,任何修改 bufSize 的尝试都会导致编译错误。注意,使用const要顺带初始化该常量。
非 const 变量默认为 extern。而const变量默认为局部变量,要使 const 变量能够在其他的文件中访问,必须地指定它为 extern。
3. 引用 &
引用是一种复合类型,通过在变量名前添加“&”符号来定义。引用必须用与该引用同类型的对象初始化:int ival = 1024; int &refVal = ival;
引用只是对象的另一名字。 事实上, 我们可以通过 ival的原名访问 ival,也可以通过它的别名 refVal 访问。
注意,非const(普通)引用不能绑定const对象,只有同样是const的引用才能绑定const对象。
const int ival = 1024; const int &refVal = ival; int &ref2 = ival; // 不合法
而且,非 const 引用还只能绑定到与该引用同类型的对象,而const 引用不仅可以绑定const对象,而且可以绑定不同但相关的类型的对象或绑定到右值。如
int i = 42; const int &r = 42; const int &r2 = r + i;
注意
当向函数的形参列表传递数据时,如果函数中是希望改变该数据的,形参就应该采用引用&的形式,否则,将只是复制了一个该数据的拷贝给函数,原数据不会发生变化。4. typedef 关键字
如果说引用(&)是定义对象的同义词,那么typedef就是定义类型的同义词。typedef double wages; typedef int exam_score; //名字可以用作类型说明符: wages hourly, weekly; exam_score test_result;
5. 枚举 enum
枚举的定义包括关键字 enum,其后是一个可选的枚举类型名,和一个用花括号括起来、用逗号分开的枚举成员列表。enum open_modes {input, output, append};
默认地,第一个枚举成员赋值为 0,后面的每个枚举成员赋的值比前面的大1。
不能改变枚举成员的值。枚举成员本身就是一个常量表达式,所以也可用于需要常量表达式的任何地方。
每个 enum 都定义一种唯一的类型。可以定义和初始化 open_modes 类型的对象。枚举类型的对象的初始化或赋值,只能通过其枚举成员或同一枚举类型的其他对象来进行。如
open_modes abc=input;
相关文章推荐
- C++学习笔记八
- C++学习笔记七
- C++学习笔记五
- C++学习笔记六
- c/c++:efficient c++,返回值优化,RVO
- C++学习笔记四
- C++学习笔记三
- C++学习笔记二
- C++学习笔记
- 漫谈C++11 Thread库之原子操作
- More Effective C++ 条款21 利用重载技术避免隐式类型转换
- VC++6_0调试篇:变量的观察--watch窗口的技巧
- C语言函数sscanf()的用法
- 二级指针的申请跟删除(基于C++的new机制)
- [一道搜狗输入法的面试题]C++转换构造函数和类型转换函数
- More Effective C++ 条款20 协助完成"返回值优化(RVO)"
- (更新)OutputDebugString函数简单封装,实现格式化打印输出(VC++)
- C++中的SFINAE
- C++实现屏幕截图(全屏截图)
- c++连接SQL server2005