【发布时间】:2016-07-05 19:38:26
【问题描述】:
typedef struct DT {
int ID; /* Class ID of this training pattern */
int VecDim; /* Vector dimension in Mat */
int VecNum; /* Number of vectors in Mat */
float **Mat; /* Vector sequence */
struct DT *Next;
} DType;
二维数组在typedef struct 中定义。我想在主函数中访问它,尺寸为 [10000][64]。我需要 8 个这样的矩阵,其中每个矩阵从数据数组中读取 64 个字节的数据。操作是这样的,数据数组的前 64 个字节填充到第一个矩阵的第一行,接下来的 64 个字节填充到第二个矩阵的第一行,依此类推。当所有 8 个矩阵的第一行都填满时,它将开始填充每个矩阵的第二行。
这里Mat 是一个二维数组,我必须在主函数中访问它。我需要为每个创建的矩阵分配单独的内存吗?
【问题讨论】:
-
在您的问题中包含您在
main()函数中尝试过的内容会有所帮助 -
我在您的结构定义中看不到任何二维数组(可能看起来更像
float Mat[N][M])。我所看到的只是一个指向浮点指针(float **)的指针,根据某些定义,它可能会或可能不会“像”二维数组一样使用,但一个简单的float *也可以“像”二维数组一样使用.代码(不仅仅是结构定义)是确定这类事情的地方...... -
如果你有 3 个维度(#of 数组、行和列),为什么需要两级间接?在需要时使用
void *并将其转换为指向二维数组的适当指针(例如float (*)[8][64/sizeof(float)])或float ***会更有意义 -
欢迎来到 Stack Overflow。请尽快阅读About 页面,以及有关创建 MCVE 的页面 (minimal reproducible example)。我们通常不会从头开始编写代码,但我们会帮助您解决代码中的问题。您对需要做什么的解释不清楚-每个矩阵中有 10,000 行,每行有 64 个浮点数。你如何从 64 字节的数据中填充这些浮点数?如何从 64 个字节中填充 10,000 行?
-
感谢您的建议,我将首先开始编写自己的代码,稍后会提出问题。就问题而言,我有一个一定大小的浮点数组,我需要将该数组的前 64 个元素放在第一个矩阵中,接下来的 64 个元素放在另一个矩阵中,依此类推。