在C++如何函数中创建二维数组

#include<iostream>
using namespace std;

void pre(int m,int n,int **P )
{
int i;
P=new int*[m];
for(i=0;i<m;i++)
P[i]=new int[n];
}
int main()
{ int **P;
int m,n,i,j;
cout<<"请输入m*n的矩阵规格:";
cin>>m>>n;
pre(m,n,P);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cin>>P[i][j];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<P[i][j];
}
}
delete[] P;
return 0;
}

每次当我输入m和n的值时,就出现错误然后程序结束,应该怎么传递参数?

#include <iostream>
using namespace std;

void new2(int **&P, int m, int n){    //需要修改实参P,所以定义成引用类型
P = new int*[m];
for(int i=0; i<m; i++)
P[i] = new int[n];
}
 
void delete2(int **P, int m){
for(int i=0; i<m; i++)
delete[] P[i];
delete[] P;
}

int main(){
int **P;
int m, n;
 
cout << "请输入m*n的矩阵规格:";
cin >> m >> n;
 
new2(P, m, n);
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cin >> P[i][j];
}
}
 
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
cout << P[i][j] << ' ';
}
cout << endl;
}
 
delete2(P, m);
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-14
要创建一个m*n的二维数组arr,方法如下:
C:
int** arr=(int **)malloc(sizeof(int *)*m);
for (i=0; i<m; i++)
  arr[i]=(int *)malloc(sizeof(int) * n);
C++:
int ** arr=new int* [m];
for (i=0; i<m; i++)
  arr[i]=new int[n];
第2个回答  2014-03-27
int a[10][10]

int *[]a=new int[][]
第3个回答  2014-03-27
在P之前怎么有两个*,主函数里面对P都没有定义,后面直接能用?
第4个回答  2014-03-27
不就是 int a[3][3]不行么

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网