下载心情

愿这个小家能给大家带来好的方法,好的思路。愿大家每天都有好心情!

导航

C++Primer读书笔记(第三章)(04)

3.8枚举类型

枚举提供了一种替代的方法,他不仅定义了整数常量,而且还把他们组成一个集合。

Enum open_modes{input=1,output,append};  //表面上只给第一个赋值了,但后面的系统给他们按顺序递增赋值了。如果都不赋值,则系统从0开始顺序赋值。每一个的默认值都是在前一个的基础上加1,如:如果共有6个元素,第一个赋值为1,第5个赋值为1,其他默认,则他们的值为(1,2,3,4,1,2)。

 

Void openfile(string file_name,open_modes om){ //函数实现 }

Void main(){openfile(“the new file”, output)}  //注意,这时只能使用open_modes列出的三种类型。使用其他就会提示错误。

还可以声明枚举类型对象:

open_modes om = output;

openfile(“the new file”, om);  //和类的声明一样使用

 

但不能打印枚举名:cout<< om;

也不支持迭代:for(open_modes om = output;om!=append;om++)

必要时,枚举类型可以自动提升为算术类型,但不能用数字给枚举类型的元素赋值。例:

int a=10;

int b=a*output;  //是正确的(这里执行的是乘法运算)

output = 2;  //是错误的。

3.9数组

数组的下标必须为常量。

被显示初始化的数组不需要指定长度:int val[] = {0,1,2,3};  //长度为4

如果指定了长度,那么初始化时不能超过这个长度,少于这个长度的元素默认赋值为0。

 

字符数组可以用字符初始化:char name[] = {‘c’,‘+’,‘+’};

也可以用字符串来做初始化:char name[] =“c++”;

但这两个却不是等价的,第二个多了一个结束符,长度比第一个多了1。

 

不允许引用数组,不能用一个数组给另一个数组赋值或初始化。

 

多维数组:

int val[2][3] = {{1,2,3},{4,5,6}};

int val[2][3] = {1,2,3,4,5,6};两种定义方式

数组指针:

int ia[9] = {};

int *pbegin = ia;// 等同于int *pbegin = &ia[0];

int *pend = ia+9;// 等同于int *pend = &ia[8];

posted on 2006-03-29 12:10  stiven@心情  阅读(394)  评论(1编辑  收藏  举报