学习线性表的过程中,知道了线性表的两种实现方式,一种是静态的一种是动态的,动态线性表的实现中经常可以看到分配空间的语句L = new Lnode,在释放的时候是delete L。虽然这样用,但是一直不知道为什么要这样用。
int *pia = new int[get_size]; //pia指向第一个int,调用get_size确定分配多少个int //方括号内必须为整型,但不必是常量 //使用类型别名来分配数组 typedef int arrT[42]; //arrT表示42个int的数组类型 int *p = new arrT; //分配一个42个int的数组,p指向第一个int;
上述new分配了一个int数组,并返回指向第一个int的指针
注意:即使代码中没有方括号,但是编译器执行这个表达式的时候还是会用到new[],即编译器实际执行的时候是:
int *p = new int[42];
分配一个数组会得到一个元素类型的指针
初始化动态内存分配对象的数组
int *pia = new int[10]; //10个未初始化的int
int *pia2 = new int[10](); //10个值初始化为0的int
int *pia3 = new int[10]{1,2,3,4,5,6,7,8,9,0}; //10个int分别用类别中对应的初始化器进行初始化
假设分配的大小为int *p = new int[0]
,new会返回一个合法的非空指针。该指针与new返回的其他任何指针都不相同,可以向此指针加上或减去0,也可以从此指针减去自身得到0。但是,此指针不能解引用,因为它不指向任何元素
delete p; //p必须指向一个动态分配的对象或为空; delete []pa; //pa必须指向一个动态分配的数值或为空;