一:定义
new其实就是开辟一段新的空间,但是和一般的声明不同的是,new开辟的空间在堆上,而一般声明的变量存放在栈上。通常来说,当在局部函数中new出一段新的空间,该段空间在局部函数调用结束后仍然能够使用,可以用来向主函数传递参数。另外需要注意的是,new的使用格式,new出来的是一段空间的首地址。所以一般需要用指针来存放这段地址。
二:用法(三种)
格式1:指针变量名=new 类型标识符;
格式2:指针变量名=new 类型标识符(初始值);
格式3:指针变量名=new 类型标识符 [内存单元个数];
格式1和格式2都是申请分配某一数据类型所占字节数的内存空间;但是格式2在内存分配成功后,同时将一初值存放到该内存单元中;而格式3可同时分配若干个内存单元,相当于形成一个动态数组
第一种:创建一个普通变量
int a = 10;//栈上 int* p = new int(10);//堆中
实际上就是这么个情况:一个存放int* 指针的p,指向了堆中new出来一段空间(这段空间是用来存放int数据)的首地址。
第二种:创建数组
int* p1 = new int[10]; int(* p2)[10] = new int[2][10];
第三种:创建自定义对象
C* p2 = new C;暑期编程PK赛 得CSDN机械键盘等精美礼品!



