如何获取多维数组中的数组数

时间:2015-04-14 21:19:45

标签: c arrays multidimensional-array

我有一个由多个子数组组成的多维数组。是否可以计算数组中子数组的数量?

2 个答案:

答案 0 :(得分:3)

如果在堆栈上声明了数组,那么可以使用sizeof()函数获取元素数量:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a[3][4];

    fprintf(stdout, "size of a in bytes: %zu\n", sizeof(a));
    fprintf(stdout, "size of a[0][0] in bytes: %zu\n", sizeof(a[0][0]));
    fprintf(stdout, "number of elements in a: %zu\n", sizeof(a)/sizeof(a[0][0]));

    int b[3][4][5];

    fprintf(stdout, "size of b in bytes: %zu\n", sizeof(b));
    fprintf(stdout, "size of b[0][0][0] in bytes: %zu\n", sizeof(b[0][0][0]));
    fprintf(stdout, "number of elements in b: %zu\n", sizeof(b)/sizeof(b[0][0][0]));

    return EXIT_SUCCESS;
}

编译:

$ gcc -Wall stack_array_test.c -o stack_array_test

结果:

$ ./stack_array_test
size of a in bytes: 48
size of a[0][0] in bytes: 4
number of elements in a: 12
size of b in bytes: 240
size of b[0][0][0] in bytes: 4
number of elements in b: 60

了解这一点,您可以修改分母以获得不同维度索引的元素大小。我将此作为练习。

现在,如果您的数组是动态声明的 - 在堆上 - 那么您就无法使用此技术。

您可以创建一个struct来模仿存储指针的vector,以及表示元素数量的size_t。您可以扩展这个想法以保持向量的向量,或向量的向量的向量,等等。获得&#34;子阵列的数量&#34;将是查找每个嵌套向量的大小参数并保持运行计数的问题。

答案 1 :(得分:0)

是的,可以计算数组中子数组的数量吗?

以下是用PHP编写的示例

$ jar -i /tmp/vtk-dicom/bin/lib/vtkdicom.jar
java.io.FileNotFoundException: /tmp/vtk-dicom/bin/lib/usr/share/java/vtk.jar (No such file or directory)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:215)
    at java.util.zip.ZipFile.<init>(ZipFile.java:145)
    at java.util.jar.JarFile.<init>(JarFile.java:154)
    at java.util.jar.JarFile.<init>(JarFile.java:91)
    at sun.tools.jar.Main.getJarPath(Main.java:1052)
    at sun.tools.jar.Main.getJarPath(Main.java:1068)
    at sun.tools.jar.Main.genIndex(Main.java:1084)
    at sun.tools.jar.Main.run(Main.java:269)
    at sun.tools.jar.Main.main(Main.java:1177)