在声明具有固定行数和未知列数的二维数组时出现问题

时间:2019-05-15 06:55:31

标签: c++ pointers multidimensional-array dynamic-memory-allocation

我有一个矩阵M [10] [11]。在矩阵的每一行中,存储从0到R的一系列数字,其中R分别针对矩阵的每一行计算为R = random(10)。 例如,如果R=4

在第5行
M[5][0]=0
M[5][1]=1
M[5][2]=2
M[5][3]=3
M[5][4]=4
M[5][5]=-1

此-1存储在每一行的末尾。

然后,声明一个整数指针A [10]的数组。来自矩阵M每行的数据,并计算存储在该行中的整数值的数量(包括-1)。动态分配内存以存储那么多的值,并将分配的内存地址存储在指针数组的相应数组元素中。然后将M的内容复制到A。因此,A [5]具有6个值0、1、2、3、4,-1。

我陷入了内存分配的困境。试图像这样分配内存。不确定是否正确

A[i]=new int [j+1];

请参见下面的代码:

int M[10][11], R, *A[10];
srand(time(0));
for (int i = 0; i<10; i++)
{
    R = 1 + (rand() % 10);
    for (int j = 0; j <= R; j++)
        M[i][j] = j;
    M[i][R + 1] = -1;
}
for (int i = 0; i<10; i++)
{
    for (int j = 0;; j++)
    {
        if (M[i][j] == -1)
            A[i] = new int[j + 1];
    }
}
for (int i = 0; i<10; i++)
{
    for (int j = 0;; j++)
    {
        A[i][j] = M[i][j];
        cout << A[i][j] << "\t";
    }
    cout << endl;
}

无输出。

0 个答案:

没有答案