第1个回答 推荐于2017-09-07
一维数组是指针,可将二维数组看作是指针的指针:
每一行是一个一维数组,而列是指向行的指针,在动态创建时,先分配指向行的指针空间,再循环维每一行申请空间。
#include <iostream>
using namespace std;
int main()
{
//[3]4] //三行四列的二维数组
int x,y;
int i,n,k;
x=3;
y=4;
int **p;
p = new int*[x]; //行 //申请行的空间
//每行的列申请空间
for(i=0; i<x;i++)
{
p[i] = new int [y];
}
//赋值,
k=0;
for(i=0;i<x;i++)
{
for(n=0;n<y;n++)
{
p[i][n] = k;
k++;
}
}
//显示刚才的赋值
for(i=0;i<x;i++)
{
for(n=0;n<y;n++)
{
cout << p[i][n] << "\t";
}
cout << endl;
}
//删除刚才申请的内存
for(i=0;i<x;i++)
{
delete [] p[i];
}
delete [] p;
return 0;
第2个回答 2008-08-02
C++使用vector方便生成:
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
int main()
{
int i,
j,
m, //行数
n; //列数
cout << "input value for m,n:";
cin>>m>>n;
//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。
vector<vector<int> > vecInt(m, vector<int>(n));
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
vecInt[i][j] = i*j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
cout<<setw(5)<<vecInt[i][j]<<":"<<setw(9)<<&vecInt[i][j];
cout<<endl;
}
return 0;
}
第3个回答 2008-08-02
int**a=new int *[len1+1];
for(int i=0;i<=len1;i++)
a[i]=new int [len2+1];
第4个回答 2008-08-02
直接用new语句就可以了