您的位置:首页 > 编程语言 > C语言/C++

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: