我正在用C ++编写程序,我正在尝试使用值声明一个数组,但只将此值设置为数组中的第一个成员。
char mines[100][100] = {'0'};
答案 0 :(得分:2)
在每个维度上使用std::fill
:
for (int i = 0; i < 100; ++i)
std::fill (mines[i], mines[i] + 100, '0');
或者在C ++ 11中:
for (auto &chars : mines)
std::fill (std::begin (chars), std::end (chars), '0');
更简单,使用数组连续的事实,您可以节省自己的循环:
std::fill (mines, mines + 100*100, '0');
如Shahbaz指出的那样消除那里的幻数,将mines + 100*100
替换为sizeof(mines)
。
答案 1 :(得分:2)
如果您不想编写或生成10000个元素的初始化列表,您可以这样做:
char mines[100][100];
memset(mines, '0', sizeof(mines));
答案 2 :(得分:0)
我通常使用for循环来初始化所有值。据我所知,你只能通过列表初始化,而不是所有元素的默认值。
答案 3 :(得分:0)
您只会通过执行
来初始化第一个元素char mines[100][100] = {'0'};
其余部分将使用0
(值不是字符)进行初始化,您需要循环。像这样:
int row, column;
for (row = 0; row < 100; row++)
for (column = 0; column < 100; column++)
mines[row][column] = '0';
答案 4 :(得分:0)
Luna,这被称为零初始化器,只能将所有值初始化为零对应的值:空指针,零。如果你尝试将char初始化为0它将起作用,但是任何其他值都不会。
更多信息here。
#include <iostream>
int main(int argc, char *argv[])
{
int value[2][2] = {0};
for(int i = 0; i < 2; ++i)
for (int j = 0; j < 2; ++j)
std::cout << (value[i][j] == 0) << std::endl;
return 0;
}
输出:
1 1 1 1
如果您需要使用特定值进行初始化,我认为Luchian拥有memset的最佳解决方案。