C + +操作符n e w可用来进行动态存储分配,该操作符返回一个指向所分配空间的指针。例
如,为了给一个整数动态分配存储空间,可以使用下面的语句来说明一个整型指针变量:
int *y ;
当程序需要使用该整数时,可以使用如下语法来为它分配存储空间:
y = new int;
操作符n e w分配了一块能存储一个整数的空间,并将指向该空间的指针返回给 y ,y是对整数指
针的引用,而* y则是对整数本身的引用。为了在刚分配的空间中存储一个整数值,比如 1 0,可
以使用如下语法:
*y = 10;
我们可以把上述三步(说明y, 分配存储空间,为*y 赋值)进行适当的合并,如下例所示:
int *y = new int;
*y = 10;
或
int *y = new int (10);
或
int *y;
y = new int (10);
数据的大小在编译的时候可能是未知的,事实上,它们可能随着函数调用的变化而变化。因此对于这些数组必须进行动态存储分配。
为了在运行时创建一个一维浮点数组x,首先必须把x说明成一个指向f l o a t的指针,然后为
数组分配足够的空间。例如,一个大小为n 的一维浮点数组可以按如下方式来创建:
float *x = new float [n];
操作符n e w分配n 个浮点数所需要的空间,并返回指向第一个浮点数的指针。可以使用如下语
法来访问每个数组元素:x[0], x[1], ..., x[n-1] 。
动态分配的存储空间不再需要时应该被释放,所释放的空间可重新用来动态创建新的结构。
可以使用C + +操作符d e l e t e来释放由操作符n e w所分配的空间。下面的语句可以释放分配给* y的
空间以及一维数组x :
delete y;
delete [ ] x;