C语言动态二维double型数组赋值问题
#include"stdio.h"
#include"malloc.h"
typedef struct Array
{
double **a;
int row_num;
int col_num;
}Array;
main()
{
int i,j;
Array arr1;
//input A
printf("Matrix A\nInput rows and columns:");
scanf("%d %d", &arr1.row_num, &arr1.col_num);
printf("%d rows, %d columns\n", arr1.row_num, arr1.col_num);
arr1.a=(double **)malloc(arr1.row_num*sizeof(double *));
for(i=0;i<arr1.row_num;i++)
{
arr1.a[i]=(double*)malloc(arr1.col_num*sizeof(double));
}
for(i=0;i<arr1.row_num;i++)
{
for(j=0;j<arr1.col_num;j++)
{
printf("Input A[%d][%d]: ",i,j);
scanf("%f",&arr1.a[i][j]);
//printf("%d\n", &arr1.a[i][j]);
}
}
//printf("%d %d",arr1.a,&arr1.a[0][0]);
printf("\nmatrix A = ");
for(i=0;i<arr1.row_num;i++)
{
for(j=0;j<arr1.col_num;j++)
{
printf("%f ",arr1.a[i][j]);
}
printf("\n ");
}
printf("\n");
for(i=0; i<arr1.row_num; i++)
{
free(arr1.a[i]);
}
free(arr1.a);
}
为什么输出数组元素不正确,如图片所示。请大家帮帮忙,感激不尽!
[解决办法]
//在堆中开辟一个4×5的二维double数组#include <stdio.h>#include <malloc.h>double **p;int i,j;void main() { p=(double **)malloc(4*sizeof(double *)); if (NULL==p) return; for (i=0;i<4;i++) { p[i]=(double *)malloc(5*sizeof(double)); if (NULL==p[i]) return; } for (i=0;i<4;i++) { for (j=0;j<5;j++) { p[i][j]=(double)(i*5+j); } } for (i=0;i<4;i++) { for (j=0;j<5;j++) { printf(" %4.1lf",p[i][j]); } printf("\n"); } for (i=0;i<4;i++) { free(p[i]); } free(p);}// 0.0 1.0 2.0 3.0 4.0// 5.0 6.0 7.0 8.0 9.0// 10.0 11.0 12.0 13.0 14.0// 15.0 16.0 17.0 18.0 19.0