1、定义枚举类型
//定义枚举类型,其中对应的分别是 0 1 2 3 4。。。
enum spectrum {red, orange, yellow, green, blue};
spectrum band;
- 枚举类型的赋值只能是定义的成员之一
- 枚举类型中没有算数运算
band =red; //合法 成员之一
band=20; //不合法,非枚举成员
++band; //不合法
band = blue + 1; //不合法
band = 2: //不合法
band = (color)2; //合法
- 自定义枚举类型初始值,未指定默认从0开始递增
enum bit { one =1; two =2, four =4, eight =8};
2、注意 new和 delete 的配对使用,防止内存泄漏,防止两次释放同一个区域的错误。
3、静态联编:静态数组 ,在编译时候确定数组的大小;
动态联编:动态数组,运行时候确定大小
int * psome =new int[10];
delete [] psome; //释放数组
4、无法使用sizeof 获得 动态数组的大小
int a = 10;
int * b = new int;
int c[10] = { 1, 2 };
int *d = new int[15];
cout << "sizeof a :" << sizeof(a) << endl;
cout << "sizeof b :" << sizeof(*b) << endl;
cout << "sizeof c :" << sizeof(c) << endl;
cout << "sizeof d :" << sizeof(*d) << endl;
5、自动存储,静态存储,动态存储
-自动存储 ,也就是局部变量,生命周期在一个代码块内 {},栈上建立
如下的代码块中,每次循环重新生成一个变量,其声明周期只在 花括号内
while (1)
{
int a =4;
}
-静态存储 static 堆上建立
-动态存储 使用new ,生命周期不受控制
6、
数组的替代 模板类 vector array
vector
- 初始长度可以指定为0,长度可以变化
- 但是效率低
- 存储在栈中
#include <vector> //头文件
...
vector<int> vi;
int n=6;
vector<double> vd(n);//可以使用变量制定生成的数组长度
array
- array的长度固定,不能使用变量定义长度
- 存储在堆中
- array之间可以直接赋值运算
#include <array>
...
array<int,5> ai;
array<double, 4> ad ={1.2, 1.4, 6.7, 1.8};
array<double, 4> ac=ad;
7、逗号运算符结合两个表达式, 使其只占用一个表达式的位置
for (int i=0; i<5; i++)
int j=0, double k=1.0; //可以结合两个变量定义
cata =17, 240;
cata2 =(17,240);
逗号运算符,使得前面的有优先级,而括号使得后面的那个优先级更高
int cata,cata2;
cata = 17, 20;
cata2 = (17, 20);
cout << "cata :" << cata << " cata2: " << cata2 << endl;
8、string 类的对象可以直接比较字符串,但是C语言风格的需要使用strcmp来比较两个字符串+
9、基于范围的for 循环 ,其中括号不能省略
double prices[5] = { 3.44, 1.99, 3.5, 4.9, 2.9};
for (double x : price)
{
cout << "xx : " <<x <<endl;
}
10、指针数组存储字符串; 二维数组存储字符串
const char * cities[2] =
{
"Gribble City",
"New Gribble"
};
//二维数组的方式存储, 限定单个长度不超过24
const char cities[2][24] =
{
"Gribble City",
"New Gribble"
};
11、switch 表达式中必须使用 整形表达式,int char 枚举类型等