Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的多维灵活数组初始值设定项_C_Arrays - Fatal编程技术网

C语言中的多维灵活数组初始值设定项

C语言中的多维灵活数组初始值设定项,c,arrays,C,Arrays,有没有办法将数组声明中的[5]替换为[]?一切都是静态声明的,为什么它需要知道大小 #include <stdio.h> int main (int argc, char *argv[]) { int M[][5]={ {0, 1, 2, 3, 4}, {10,11,12,13,14}, {20,21,22,23,24}, {30,31,32,33,34}, }; int DimX=size

有没有办法将数组声明中的[5]替换为[]?一切都是静态声明的,为什么它需要知道大小

#include <stdio.h>

int main (int argc, char *argv[]) {
    int M[][5]={
        {0,  1, 2, 3, 4},
        {10,11,12,13,14},
        {20,21,22,23,24},
        {30,31,32,33,34},
    };

    int DimX=sizeof(M)/sizeof(M[0]);    // 4
    int DimY=sizeof(M[0])/sizeof(int);  // 5

    printf("Size: %d %d\n", DimX, DimY);
    return 0;
}

一句话,不是。要确定一个N维数组元素的索引,你需要知道除了第一个数组维度以外的所有维度。为什么他们在上一个标准中没有解决这个问题?我真的看不出有什么理由这样做,当然除了语言的时代。…。@Dr.Nefario:你希望编译器如何推断数组维度?使用sizeof计算的表达式,顺便说一句,它不是函数,应该是size_t类型,而不是int类型。@Dr.Nefario:初始值设定项不是必需的,也可能是不完整的,因此,通常不能使用它们来推断所有数组维度。