如何在c / c ++中已知列的时间一次动态地分配一行二维数组

Posted

技术标签:

【中文标题】如何在c / c ++中已知列的时间一次动态地分配一行二维数组【英文标题】:how to dynamically allocate 2d array by one row at a time where column is known in c/c++ 【发布时间】:2014-07-03 07:09:07 【问题描述】:

我想分配一个二维数组(在 C 或 C++ 中),其中行未知但列已知。我不想先分配我的行 n 大小,因为当我想要输入时,数组的第一行将分配已知的列大小->然后我接受我的输入-> 将它放在我的数组的第 1 行。然后如果我想要输入,数组的第二行将分配已知的列大小->然后我接受我的输入->把它放在我数组的第 2 行。此过程将运行未知数量的行,我想保留所有输入以供进一步处理。当我按两次 Enter 按钮时,输入将停止,下一个过程将开始,这不是问题。我应该怎么做这在 C 或 C++ 中是否可能?给我完整的功能代码将非常有帮助,因为我对指针或数组或与此问题的解决方案相关的其他事物知之甚少。

【问题讨论】:

在 C++ 中使用std::vector 如果可能请提供完整的代码 这里有你可能需要的一切..cplusplus.com/reference/vector/vector @user3257218 -1 要求其他人为您完成工作。这不是 SO 的用途。 “C 或 C++”不是一种语言。这是两种语言,每种语言的答案都不同。是哪个? 【参考方案1】:

类似于使用realloc,您可以使用malloc 一次分配一个行。下面提供了一个动态增长的数组,其中包含ARRAY_WIDTH 的固定列。每行的输入需要ARRAY_WIDTH 值。示例:

#define ARRAY_WIDTH 10

/* psuedo code for array of ints with fixed columns = ARRAY_WIDTH */

int *array[ARRAY_WIDTH];
int idx = 0;
int j = 0;

/* get your input with getline in a while loop */

        array[idx] = malloc (sizeof (array));  /* allocate fixed width */

        /* assign values to array  0 <= values < ARRAY_WIDTH */
        for (j = 0, ptr = buffer; j < ARRAY_WIDTH; j++, ptr++)
            array [idx][j] = /* your data */;

        idx++;


int nrows = idx;

【讨论】:

以上是关于如何在c / c ++中已知列的时间一次动态地分配一行二维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在C中为char**动态分配内存

如何在 C 中动态分配二维数组? [复制]

如何在 C 中找到动态分配数组的大小?

如何在 C 中将动态分配的 3D 数组写入 hdf5 文件?

如何将数据动态存储在C中的链表中?

c语言中啥是动态分配内存?