C++ 基础学习第四天
C++的基本 类型分为两组:一组由存储为整数的值组成,另一组由存储为浮点数的值组成。
整型之间通过存储值时使用的内存量和有无符号来区分。
整型从最小到最大依次是:bool, char, signed char, unsigned char, short, unsigned short, int, unsigned int, long, unsigned long, long long
字符通过其数值编码来表示。I/O系统决定了编码被解释为字符还是数字。
string对象和字符数组之间的主要区别是:可以将string对象声明为简单变量,而不是数组:
string str1; //create an empty string object string str2 = "panther"; //create an initialized string
共用体
共用体(union)是一种数据格式,他能存储不同的数据类型,但只能同时存储其中的一种类型。
共用体每次只能存储一个值,这个值可以是你定义中的任意一种类型,所以共用体的长度为最大成员的长度。
用途:可以灵活的让数据香拥有多种类型,同时还节省了一定的空间。
匿名共用体(anonymous union)没有名称 其成员将成为位于相同地址处的变量。显然,每次只能有一个成员是当前的成员。
枚举
//使用枚举的句法和结构体相似
enum color{red, bule, yellow, green, orange, violet};//color 为新类型的名称,red等作为符号常量,它们对应整数值0~7.这些常量叫枚举量
color food_color;
food_color = blue; //valid
food_color = 2000; //invalid
int food_color = blue; // valid, to int
food_color = 3; // invalid, int not converted to color
color = red + 3; // valid,red converted to int
使用new来创建动态数组
1.使用new创建动态数组
int * psome = new int [10];
释放内存:delete [] psome;
注:使用new和delete时,应遵循一下规则:
(1)不要使用delete释放不是new分配的内存
(2)不要使用delete释放同一个内存块两次
(3)如果使用new [ ] 为数组分配内存,则应使用delete[ ]来释放
(4)如果使用new为一个实体分配内存,则应使用delete来释放
(5)对空指针应用delete时安全的
2.使用动态数组
访问动态数组内元素的两种办法:
double * p = new double [3];
p[0] = 0;
p[1] = 1;
p[2] = 2;
(1)直接使用数组加下标的方式访问
cout << p[1] << endl;
输出: 1;
(2)通过移动指向数组第一个元素的指针来访问
p = p + 1;
cout <<p[0] << endl;
输出:1
注:在使用移动指针来访问动态数组元素时,最好先将数组地址传给一个临时的指针变量,对指针变量进行操作,这样会避免释放放内存出现麻烦。
注:指针变量加 1 后,其增加的值等于指向的类型占用的字节数。
数组的动态联编和静态联编
使用数组声明来创建数组时,将采用静态联编,即数组的长度在编译时设置:
int tacos[10]; //static binding, size fixed at compile time
使用new[ ]运算符创建数组时,将采用动态联编(动态数组),即将在运行时为数组分配空间,其长度也在运行时设置,使用这种数组后,应使用delete[ ]释放其占用的内存;
int size;
cin >> size;
iint * pz = new int [size];
...
delete [] pz;