关于动态数组Access Violation的问题

Donald_Duck 2008-10-13 10:55:43
我想动态输入一个N阶矩阵,然后存到一个动态数组里,下面是我的代码,我是在主函数内调用另外一个函数input_matirx()来实现N阶矩阵的存储的,我发现在input_matrix()函数内可以显示输入的矩阵,但在主函数内显示时,就出现0xC0000005:Access Violation异常,我想是因为在主函数内不能访问那个动态数组吧,但是为什么呢?


#include<iostream>
using namespace std;
void input_matrix(double**buffer,int &N);
void main()
{
double **buffer=NULL;
int N=0;//方阵的阶数
input_matrix(buffer,N);//输入N阶矩阵
//************在主函数内显示输入的矩阵******************/
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cout<<buffer[i][j]<<" ";
}
cout<<endl;
}
//*******************************/

}
void input_matrix(double**buffer,int &N)
{
cout<<"请输入方阵的阶数"<<endl;
cin>>N;
buffer=new double *[N];//指针数组
for(int j=0;j<N;j++)
{
buffer[j]=new double [N];
}
cout<<"请输入方阵的元素:"<<endl;
for(int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cin>>buffer[i][j];
}
}
//******************在input_matix()内显示输入的矩阵****************************/
/*for(i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
cout<<buffer[i][j]<<" ";
}
cout<<endl;
}*/
//***********************************************/

}
...全文
157 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
glacier3d 2008-10-13
  • 打赏
  • 举报
回复
buffer传参有问题
zclever 2008-10-13
  • 打赏
  • 举报
回复
红色怎么显示不出来啊?晕。2楼的重贴一下:

#include <iostream>
using namespace std;
void input_matrix(double**&buffer,int &N); // 用引用
int main()
{
double **buffer=NULL;
int N=0;//方阵的阶数
input_matrix(buffer,N);//输入N阶矩阵
//************在主函数内显示输入的矩阵******************/
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cout <<buffer[i][j] <<" ";
}
cout <<endl;
}
//*******************************/
return 0;
}
void input_matrix(double ** &buffer,int &N) //用引用
{
int i,j;
cout <<"请输入方阵的阶数" <<endl;
cin>>N;
buffer=new double *[N];//指针数组
for( j=0;j <N;j++)
{
buffer[j]=new double [N];
}
cout <<"请输入方阵的元素:" <<endl;
for( i=0;i <N;i++)
{
for( j=0;j <N;j++)
{
cin>>buffer[i][j];
}
}
//******************在input_matix()内显示输入的矩阵****************************/
/*for(i=0;i <N;i++)
{
for( j=0;j <N;j++)
{
cout <<buffer[i][j] <<" ";
}
cout <<endl;
}*/
//***********************************************/

}

zclever 2008-10-13
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
void input_matrix(double**&buffer,int &N); // 用引用
int main()
{
double **buffer=NULL;
int N=0;//方阵的阶数
input_matrix(buffer,N);//输入N阶矩阵
//************在主函数内显示输入的矩阵******************/
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cout <<buffer[i][j] <<" ";
}
cout <<endl;
}
//*******************************/
return 0;
}
void input_matrix(double ** &buffer,int &N) //用引用
{
int i,j;
cout <<"请输入方阵的阶数" <<endl;
cin>>N;
buffer=new double *[N];//指针数组
for( j=0;j <N;j++)
{
buffer[j]=new double [N];
}
cout <<"请输入方阵的元素:" <<endl;
for( i=0;i <N;i++)
{
for( j=0;j <N;j++)
{
cin>>buffer[i][j];
}
}
//******************在input_matix()内显示输入的矩阵****************************/
/*for(i=0;i <N;i++)
{
for( j=0;j <N;j++)
{
cout <<buffer[i][j] <<" ";
}
cout <<endl;
}*/
//***********************************************/

}

wuyu637 2008-10-13
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
double** input_matrix(int &N);
void main()
{
double **buffer=NULL;
int N=0;//方阵的阶数
buffer = input_matrix(N);//输入N阶矩阵
//************在主函数内显示输入的矩阵******************/
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cout << buffer[i][j] <<" ";
}
cout <<endl;
}
//*******************************/

}
double ** input_matrix(int &N)
{
cout <<"请输入方阵的阶数" <<endl;
cin>>N;
double **buffer=new double *[N];//指针数组
for(int j=0;j <N;j++)
{
buffer[j]=new double [N];
}
cout <<"请输入方阵的元素:" <<endl;
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
buffer[i][j] = i*j + j;
}
}
return buffer;

}
yycainiao 2008-10-13
  • 打赏
  • 举报
回复
楼主,我用你的代码修改了一下,我觉得你的问题应该是没有返回造成的;
#include <iostream>
using namespace std;
double **input_matrix(double **buffer,int &N);
int main()
{
double **buffer=NULL;
int N=0;//方阵的阶数
buffer=input_matrix(buffer,N);//输入N阶矩阵
//************在主函数内显示输入的矩阵******************/
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cout <<buffer[i][j] <<" ";
}
cout <<endl;
}
return 0;
//*******************************/

}
double **input_matrix(double **buffer,int &N)
{
cout <<"请输入方阵的阶数" <<endl;
cin>>N;
buffer=new double *[N];//指针数组
for(int j=0;j <N;j++)
{
buffer[j]=new double [N];
}
cout <<"请输入方阵的元素:" <<endl;
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cin>>buffer[i][j];
}
}
return buffer;
}
yycainiao 2008-10-13
  • 打赏
  • 举报
回复
楼主,我用你的代码修改了一下,我觉得你的问题应该是没有返回造成的;
#include <iostream>
using namespace std;
double **input_matrix(double **buffer,int &N);
int main()
{
double **buffer=NULL;
int N=0;//方阵的阶数
buffer=input_matrix(buffer,N);//输入N阶矩阵
//************在主函数内显示输入的矩阵******************/
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cout <<buffer[i][j] <<" ";
}
cout <<endl;
}
return 0;
//*******************************/

}
double **input_matrix(double **buffer,int &N)
{
cout <<"请输入方阵的阶数" <<endl;
cin>>N;
buffer=new double *[N];//指针数组
for(int j=0;j <N;j++)
{
buffer[j]=new double [N];
}
cout <<"请输入方阵的元素:" <<endl;
for(int i=0;i <N;i++)
{
for(int j=0;j <N;j++)
{
cin>>buffer[i][j];
}
}
return buffer;
}

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧