一、数组:
数组声明应该注意一下三点:1、存储在每个元素中的值的类型;2、数组名;3、数组中的元素个数
typeName arrayname[arraysize];
注:不能将一个数组赋给另外一个数组,且
二、字符串:
字符串可以存储在char型数组中也可以用string类表示。
这里主要是需要注意字符串的几种输入的区别:
1、cin使用空白(空格、制表符和换行符)来确定字符串的位置;
面向行的类成员函数:getline()、get()两个函数都是取一行为输入知道达到换行符,getline()将丢弃换行符,get()将换行符保存在队列中。
2、cin.getline(array,arraysize )使用输入的回车键作为换行符去欸的那个输入的行尾
3、cin.get(name, Arsize)与第二种输入方式类似,但如果连续使用两个此类型的输入时,第二个输入会将制表符作为第一个字符导致无法输入,解决此类的方法是加一个cin.get()函数读取一个字符。
Cin.get(name,arraysize).get()
string类
使用string类函数必须引用头文件#include<string>
使用string类比使用数组操作简单的多,可以实现将一个string赋给另外一个string即可实现string的赋值、拼接、附加(注意:字符串是双引号)
结构体struct
与C类似但是不同的是结构体名称是在struct后面直接定义,然后结构体变量可以在主函数中单独定义;
结构体内部是对象的属性,而且结构体可以在函数外定义也可以在函数中进行声明。但是结构体和数组一样不允许缩窄变换
(结构数组)与结构变量类似,其内部元素是用逗号隔开。
共用体union
共用体与结构体类似但是不能同时存储浮点型和整型,而匿名的共用体其成员位于相同地址处的变量,其目的是节省内存。
枚举
枚举是另一种创建符号常量的方式可以替代const
Enum spect{a,b,c,d}
其取值范围是其成员的最大值找到最大的最小额2的幂-1,下限如果不小于零则下限为0,如果小于零则计算方法与大于零的类似
指针
指针是另一中变量,其也依赖于变量的类型,例如*ins ,*ins是这个指针指向的地址的值,而ins是这个值所在测存储位置,也就是地址
使用new来分配内存,也称作动态存储,动态存储会将结果存到堆中,其形式为
typeName * pointer_name = new typeName;
我们要告诉new函数要为哪种数据类型分配内存,然后new函数会找到一个typeName长度的地址并把地址返回,然后把这个地址赋给一个指针
这种动态管理内存的方式是需要用delete函数释放内存的,但是delete后面的变量是需要与指针的类型一致,如果不是数组则用delete pointer_name,如果是数组的话则用delete [] pointer_name;
数组的替代品 vector和array
Vector<type> name(size); 存储在堆中
Array<typr, size> name; 存储在栈中,且可以将array对象赋给另一个array对象中
包括数组在内的三种表达方式都可以用数组表示法来访问各个元素