C++申请动态二维数组

#include<iostream>usingnamespacestd;intmain(){int**p;intm,n;cout<<"请输入行数和列数:"<<endl;c... #include<iostream>
using namespace std;

int main()
{
int **p;
int m,n;

cout << "请输入行数和列数:" << endl;
cin >> m >> n;

*p = new int[m];
for(int i = 0;i <= m-1;i++)
{
p[i]=new int[n];
}

for(int row = 0;row <= m-1;row++)
{
for(int col = 0; col <= n-1;col++)
{
p[row][col] = 0;
}
}
for(int row = 0;row <= m-1;row++)
{
for(int col = 0; col <= n-1;col++)
{
cout << p[row][col] << "\t";
}
cout << "\n";
}

system("pause");
return 0;
}

差点忘了发代码
我用指向指针的指针定义了二维数组。
1,但是刚运行到第一个FOR循环的时候就出问题了.
2,我改成手动的逐一申请(比如p[0]=NEW int[5],p[1]=new int[5]...)
然后就没问题了,但运行到最后还是有问题
3,如果我要DELETE释放,是不是要先释放*p然后逐一释放p[0~5]?
展开
 我来答
百度网友1e944cd
推荐于2017-09-10 · TA获得超过989个赞
知道小有建树答主
回答量:255
采纳率:0%
帮助的人:317万
展开全部
你好!
首先你的代码有两个问题:
1、动态创建一维数组时,是p = new int[m];
因此动态创建二维数组时,应该是p = new int *[m]; 而不是*p = new int[m]; 你的程序运行到这一步出错。

2、多次定义row,导致编译出错。

另外,如果要释放指针,需要先把数组p中的指针依次delete,最后再释放p。

最终代码如下:
int main()
{
int **p;
int m,n;

cout << "请输入行数和列数:" << endl;
cin >> m >> n;

p = new int *[m];
for(int i = 0;i <= m-1;i++)
{
p[i]=new int[n];
}

for(int row = 0;row <= m-1;row++)
{
for(int col = 0; col <= n-1;col++)
{
p[row][col] = 0;
}
}

for(row = 0;row <= m-1;row++)
{
for(int col = 0; col <= n-1;col++)
{
cout << p[row][col] << "\t";
}
cout << "\n";
}

for(row = 0;row <= m-1;row++)
{
delete [] p[row];
}
delete p;

system("pause");
return 0;
}
上上西
2010-09-13 · TA获得超过346个赞
知道小有建树答主
回答量:386
采纳率:0%
帮助的人:0
展开全部
#include<iostream>
using namespace std;

int main()
{
int **p;
int m,n;

cout << "请输入行数和列数:" << endl;
cin >> m >> n;

p = new int*[m];
for(int i = 0;i <= m-1;i++)
{
p[i]=new int[n];
}

for(int row = 0;row <= m-1;row++)
{
for(int col = 0; col <= n-1;col++)
{
p[row][col] = 0;
}
}

for(int row = 0;row <= m-1;row++)
{
for(int col = 0; col <= n-1;col++)
{
cout << p[row][col] << "\t";
}
cout << "\n";
}

for(int row = 0;row <= m-1;row++)
{
delete [] p[row];
}

system("pause");
return 0;
}

//p是指向指针的指针,用它来开辟指针数组,然后指针数组中的每个指针一次开辟空间,释放空间帮你写出来了,要把指针数组中的指针依次delete。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友37abf2d
2012-03-15
知道答主
回答量:27
采纳率:0%
帮助的人:6.4万
展开全部
使用vector生成二维数组方便些。也便于操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大衍之49
2010-09-13 · TA获得超过1049个赞
知道小有建树答主
回答量:1159
采纳率:0%
帮助的人:1071万
展开全部
奇怪,我这里运行代码没问题啊
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式