【发布时间】:2020-05-12 18:56:44
【问题描述】:
我想将一个填充了 0 到 14 数字的二维数组 (3x5) 复制到一个一维数组中。当我创建静态数组时它已经工作了。 我想对一些动态分配的数组做同样的事情,但遇到了问题。数组似乎有 8 列,而不是 3 行和 5 列,并给我一个带有一些随机值的输出。
如果有人可以帮助我,我会很高兴。我尝试修复了 2 个小时,但我无法弄清楚问题出在哪里。
代码:
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define N 5
void output(int* Array, int m, int n)
{
for( int i=0 ; i<m ; i++)
{
for( int j=0 ; j<n ; j++)
printf("\t%d", Array[i*n + j]);
printf("\n");
}
printf("\n");
}
void array_copy(int* Array_2d, int* Array_1d, int m, int n)
{
for( int i=0; i<m; i++)
for( int j=0; j<n; j++)
Array_1d[i*n + j] = Array_2d[i*n + j];
}
int main(int argc, char **argv)
{
//int Array_basis [M][N] = { { 0, 1, 2, 3, 4}, {5, 6, 7, 8, 9}, {10, 11, 12, 13, 14} };
//int Array_result [M*N];
int** Array_basis; // Create 2D Array
Array_basis = malloc(M*sizeof(int*));
for(int i=0; i<M; i++)
Array_basis[i] = malloc(N*sizeof(int));
for(int i=0; i<M; i++) // This part should fill the array with numbers from 0 to 14, but e.g. Array_basis [0][7] = 0; is also working, so that some values from [M][5] to [M]{7] are random
for(int j=0; j<N; j++)
Array_basis[i][j] = i*N + j;
int* Array_result = malloc((M*N*sizeof(int))); // Create 1D Array
output(*Array_basis, M, N);
array_copy (*Array_basis, Array_result, M, N);
output(Array_result, M, N);
}
我希望输出如下所示:
这就是它的样子:
【问题讨论】:
标签: c arrays multidimensional-array