【问题标题】:2D array - invalid initializer in C?二维数组 - C 中的无效初始化程序?
【发布时间】:2013-04-16 10:47:13
【问题描述】:

大家好,我正在尝试初始化 2D 字符数组,但遇到了问题。

int size = 300 * 400;
char * frame[3] = malloc(sizeof(char *)*size*3);

给 m:error: invalid initializer。 所以我尝试了:

int size = 300 * 400;
char frame[3][size] = malloc(sizeof(char *)*size*3);

然后我得到error: variable-sized object may not be initialized?

有什么想法可以用 3 行初始化一个大小为 300*400 的数组吗?

谢谢。

【问题讨论】:

  • 并非所有 C/C++ 编译器都支持使用可变大小声明数组。
  • 您是否尝试将 3 个字符指针的数组分配给 120000 个字符的缓冲区? 300 * 400 - 数组中的某种数组有什么意义?

标签: c arrays initialization char multidimensional-array


【解决方案1】:

你可以试试:

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
}

【讨论】:

  • @H2CO3 - 我知道,但它是编译时间,而且更易读(至少对我而言)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 2021-10-02
  • 1970-01-01
  • 2011-09-29
  • 2011-12-26
  • 1970-01-01
相关资源
最近更新 更多