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;

  

 

posted @ 2019-07-15 12:47  不想被举的栗子  阅读(104)  评论(0编辑  收藏  举报