动态分配空间问题,求大神解答
我希望是运行之后,对M, N, P进行scanf函数赋值, 之后M, N, P有值了,进而根据M, N, P的值进行分配空间
但是还是报错了。。。
既然是动态运行,不可以运行之后再赋值给M, N, P吗?进而后面开辟空间。
要是已经固定了M, N, P的值,算哪门子的动态分配空间。{:10_266:}
我是不是哪里出错了,求大神提出解决办法{:10_257:}
理论上数组长度不能为变量
可以看一下关键字 malloc free new delete
c++的话也可以用vector
#include <stdio.H>
int main()
{
int i = 0;
int j = 0;
int m,n;
//定义动态二维数组
double ** matrix;
//输入矩阵大小 M * N
printf("Input the size of matrix M * N:\n");
//scanf 格式是%d,%d,因此输入时请用逗号隔开,比如说 5,10
scanf("%d,%d",&m,&n);
//二维数组动态分配内存的方法
//先 new double * , 分配m个 double *
matrix = new double *;
//再为每一个 double * 分配 n 个 double
for(i = 0 ; i < m ; i ++)
{
matrix = new double;
}
//输入数据
printf("Input %d * %d number:\n",m,n);
for(i = 0 ; i < m ; i ++)
{
for(j = 0 ; j < n ; j ++)
{
scanf("%lf",&matrix);
}
}
//输出数据
for(i = 0 ; i < m ; i++)
{
for(j = 0 ; j < n ; j++)
{
printf("%lf,",matrix);
}
printf("\n");
}
//释放每一个double *
for(i = 0 ; i < m ; i++)
{
delete [] matrix;
}
//释放double **
delete [] matrix;
return 0;
}
https://imgchr.com/i/BPeH8e https://imgchr.com/i/BPeqvd https://imgchr.com/i/BPebgH 本帖最后由 mrcrisis 于 2020-10-21 19:33 编辑
https://s1.ax1x.com/2020/10/21/BPeH8e.pnghttps://s1.ax1x.com/2020/10/21/BPeqvd.pnghttps://s1.ax1x.com/2020/10/21/BPebgH.png 楼上说的对 mrcrisis 发表于 2020-10-21 18:07
理论上数组长度不能为变量
可以看一下关键字 malloc free new delete
c++的话也可以用vector
我用的就是new运算符,c++{:10_266:} mrcrisis 发表于 2020-10-21 19:31
第一次问问题,这个只能一个最佳吗?{:10_285:}不好意思哈 谢谢各位鱼油的帮助!
页:
[1]