数组变量和指针变量
C++数组变量实际是指针变量,指向数组的第一个索引变量
有一个重要区别是不可更改数组变量中的指针值
//p和a是同类型变量
int a[10];
typedef int* IntPtr;
IntPtr p;
p = a; //合法
IntPtr p2;
... //为p2赋一个指针值
a = p2; //非法, 不能为数组a赋不同的地址
创建和使用动态数组
动态数组使用new创建.由于数组变量其实就是指针变量,所以可以用new创建被用作数组的动态变量,并像使用普通数组那样使用动态数组变量.
//创建一个动态数组变量
typedef double* DoublePtr;
DoublePtr d;
d = new double[10]; //可用int变量代替10,到程序运行时才读入动态数组的长度
...
delete [] d; //删除动态数组需要加[]
多维动态数组
int d1, d2;
IntArrayPtr *m = new IntArrayPtr[d2]
int i, j;
for (i = 0; i < d1; i++){
m[i] = new int[d2]
}
//m现在成为一个d1*d2 的多维数组
...
for (i = 0; i < d1;i++){
delete[] m[i];
}
delete[] m;
注意对于创建数组的每个new调用,都必须有一个对应的delete[]调用.