【发布时间】:2020-12-23 05:57:37
【问题描述】:
我正在尝试制作一个由 3 个不同大小的矩阵组成的数组:
Array ={ {{1, 2, 3}, {10, 20, 30}},
{{4, 5}, {40, 50}, {400, 500}},
{{6, 7}, {60, 70}} };
我需要对我的代码使用数组索引而不是指针算法。
我想我应该创建一个包含 3 个指向矩阵的指针的一维数组。比如:
{ *ptr1[3], *ptr2[2], *ptr3[2]}
但是我怎样才能声明这样一个对象呢?另外我该如何为其赋值?
我正在使用 fread 从二进制文件中准备实际数据。
谢谢,
【问题讨论】:
-
如何知道矩阵数组中每个矩阵的大小? C 中数组的所有元素都是同质的——相同的类型。这可能意味着您需要一个结构类型的数组,其中每个结构都描述其数组的形状并包含一个合适的指向数据的指针。
-
@JonathanLeffler 我在二进制文件的单独数组中拥有所有大小。我确实知道可以使用指针数组在 C 中拥有不同大小的数组数组。但我想知道如何在我的代码中将其推广到更高维度,以便拥有不同大小的矩阵数组!
-
哦,这让生活变得微不足道——嗯,有点。你的
Array是void *Array[] = { ptr1, ptr2, ptr3 };(或者如果数组都是“int数组”类型,你可以使用int *Array[] = { &ptr1[0][0], &ptr2[0][0], &ptr3[0][0] };,或者类似的。如果需要,你可以使用复合文字来创建数组。跨度>
标签: c pointers multidimensional-array size