在C中初始化一个大的二维数组

时间:2012-03-21 22:36:31

标签: c multidimensional-array initialization

我想初始化所有元素:

char buffer[1000][1000];

' '

我试过

char buffer[1000][1000] = { ' ' };

char buffer[1000][1000] = { { ' ' } };

但两种方式似乎只是初始化第一个词。

我愿意考虑完成工作的替代方法,但我宁愿避免在main中编写这种初始化代码,甚至是单独的初始化方法。

2 个答案:

答案 0 :(得分:9)

memset(buffer, ' ', sizeof buffer);

如果阵列具有自动存储持续时间,请考虑堆分配以避免堆栈溢出。

如果数组有静态存储持续时间,你仍然需要在运行时初始化数组,因为没有办法用非零值初始化元素而不为每个元素提供单独的初始化值。

答案 1 :(得分:3)

http://linux.die.net/man/3/memset

char *buffer = malloc(1000*1000);
memset(buffer, ' ', 1000*1000);

你需要测试malloc的返回码并替换文字,但这就是它的要点。