new操作符:
在堆上申请一段内存,返回这段内存的首地址
你想给个二维数组动态分配内存,由于它在内存中仍然是顺序排列的,所以可以以一维数组的形式分配内存,维数 = 行数 * 列数
至于直接分配不能执行的原因在于,你new一个二维数组,那么它的返回类型是什么呢,是一个指向一维数组的指针,而指向数组的指针类型,是包涵维数信息的,这个维数需const量表示
给你一个例子说明
int main()
{
int row1, col1;
cin >> row1 >> col1;
int *p1 = new int[row1 * col1];
//use the p1 ...
delete [] p1;
cout << "okokok" << endl;
int row2;
cin >> row2;
const int col2 = 3;
int (*p2)[3] = new int[row2][3]; //指向数组的指针类型,包含维数信息,维数需个常数
//use the p2
delete []p2;
return 0;
}
对于多维数组的动态分配,高维维数需编译时常量,才能好的执行
在堆上申请一段内存,返回这段内存的首地址
你想给个二维数组动态分配内存,由于它在内存中仍然是顺序排列的,所以可以以一维数组的形式分配内存,维数 = 行数 * 列数
至于直接分配不能执行的原因在于,你new一个二维数组,那么它的返回类型是什么呢,是一个指向一维数组的指针,而指向数组的指针类型,是包涵维数信息的,这个维数需const量表示
给你一个例子说明
int main()
{
int row1, col1;
cin >> row1 >> col1;
int *p1 = new int[row1 * col1];
//use the p1 ...
delete [] p1;
cout << "okokok" << endl;
int row2;
cin >> row2;
const int col2 = 3;
int (*p2)[3] = new int[row2][3]; //指向数组的指针类型,包含维数信息,维数需个常数
//use the p2
delete []p2;
return 0;
}
对于多维数组的动态分配,高维维数需编译时常量,才能好的执行