2D数组-C中的初始值设定项无效?

2D数组-C中的初始值设定项无效?,c,arrays,initialization,char,multidimensional-array,C,Arrays,Initialization,Char,Multidimensional Array,嘿,伙计们,我正试图初始化一个2D字符数组,但遇到了麻烦 int size = 300 * 400; char * frame[3] = malloc(sizeof(char *)*size*3); 给出m:错误:初始值设定项无效。 所以我试着: int size = 300 * 400; char frame[3][size] = malloc(sizeof(char *)*size*3); 但是我得到了错误:可变大小的对象可能没有初始化 你知道我如何初始化一个300*400大小的3行数组

嘿,伙计们,我正试图初始化一个2D字符数组,但遇到了麻烦

int size = 300 * 400;
char * frame[3] = malloc(sizeof(char *)*size*3);
给出m:
错误:初始值设定项无效
。 所以我试着:

int size = 300 * 400;
char frame[3][size] = malloc(sizeof(char *)*size*3);
但是我得到了
错误:可变大小的对象可能没有初始化

你知道我如何初始化一个300*400大小的3行数组吗

谢谢。

您可以试试:

int size = 300 * 400;
const int rows_number = 3;
char* frame[ rows_number ]; // crate array with 3 elements, each of them `char*`
for( unsigned ii = 0; ii < rows_number; ++ii )
{
    // allocate `size` char`s for each "row"
    frame[ ii ] = malloc( sizeof(char) * size ); 
    // do not forget to free this memory later
}
int size=300*400;
常量int行数=3;
字符*帧[行数];//包含3个元素的板条箱阵列,每个元素为`字符*`
对于(无符号ii=0;ii<行数;++ii)
{
//为每个“行”分配'size`char`s
帧[ii]=malloc(sizeof(char)*大小);
//以后不要忘记释放此内存
}

并非所有C/C++编译器都支持使用可变大小声明数组。是否尝试将包含3个字符的指针的数组分配给包含120000个字符的缓冲区?300*400-数组中的某种数组有什么意义?@H2CO3-我知道,但它是编译时的,可读性更好(至少对我来说)