Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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++编写一个程序,我试图声明一个值为数组的数组,但是这个值只被设置为数组中的第一个成员。 char mines[100][100] = {'0'};_C++_Multidimensional Array_Initialization - Fatal编程技术网

用值声明数组 我正在用C++编写一个程序,我试图声明一个值为数组的数组,但是这个值只被设置为数组中的第一个成员。 char mines[100][100] = {'0'};

用值声明数组 我正在用C++编写一个程序,我试图声明一个值为数组的数组,但是这个值只被设置为数组中的第一个成员。 char mines[100][100] = {'0'};,c++,multidimensional-array,initialization,C++,Multidimensional Array,Initialization,我通常使用for循环来初始化所有值。据我所知,只能通过列表初始化,而不是所有元素的默认值。我通常使用for循环初始化所有值。据我所知,只能通过列表初始化,而不是所有元素的默认值。在每个维度上使用std::fill: for (int i = 0; i < 100; ++i) std::fill (mines[i], mines[i] + 100, '0'); 更简单的是,利用数组是连续的这一事实,您可以保存自己的循环: std::fill (mines, mines + 100*

我通常使用for循环来初始化所有值。据我所知,只能通过列表初始化,而不是所有元素的默认值。

我通常使用for循环初始化所有值。据我所知,只能通过列表初始化,而不是所有元素的默认值。

在每个维度上使用
std::fill

for (int i = 0; i < 100; ++i)
    std::fill (mines[i], mines[i] + 100, '0');
更简单的是,利用数组是连续的这一事实,您可以保存自己的循环:

std::fill (mines, mines + 100*100, '0');

正如沙巴兹指出的那样,为了消除那里的幻数,将
地雷+100*100
替换为
sizeof(地雷)

在每个维度上使用
std::fill

for (int i = 0; i < 100; ++i)
    std::fill (mines[i], mines[i] + 100, '0');
更简单的是,利用数组是连续的这一事实,您可以保存自己的循环:

std::fill (mines, mines + 100*100, '0');

正如沙巴兹指出的那样,为了消除那里的神奇数字,用
sizeof(mines)

替换
mines+100*100
,如果您不想编写或生成包含10000个元素的初始值设定项列表,可以执行以下操作:

char mines[100][100];
memset(mines, '0', sizeof(mines));

如果不想编写或生成包含10000个元素的初始值设定项列表,可以执行以下操作:

char mines[100][100];
memset(mines, '0', sizeof(mines));

您将只通过执行以下操作初始化第一个元素

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';
int行、列;
用于(行=0;行<100;行++)
用于(列=0;列<100;列++)
矿山[行][列]=“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';
int行、列;
用于(行=0;行<100;行++)
用于(列=0;列<100;列++)
矿山[行][列]=“0”;

Luna,这称为零初始值设定项,仅用于将所有值初始化为零对应值:空指针,零。如果您尝试将char初始化为0,它将起作用,但对于任何其他值都不会起作用

更多信息

#包括
int main(int argc,char*argv[])
{
int值[2][2]={0};
对于(int i=0;i<2;++i)
对于(int j=0;j<2;++j)

std::coutLuna,这称为零初始值设定项,仅用于将所有值初始化为零对应值:空指针,零。如果尝试将char初始化为0,它将起作用,但任何其他值都不会起作用

更多信息

#包括
int main(int argc,char*argv[])
{
int值[2][2]={0};
对于(int i=0;i<2;++i)
对于(int j=0;j<2;++j)


std::我真的不确定你想问什么。你是想将mines数组的每个成员都设置为0,还是想将第100个元素的第100个成员设置为0?以这种方式使用的初始值设定项列表将专门为所有包含的元素设置值,所有未包含的元素都将初始化为0。我不确定你要做什么We’我们想问。您是想将mines数组的每个成员都设置为0,还是想将第100个元素的第100个成员设置为0?以这种方式使用的初始值设定项列表将专门为所有包含的元素设置值,所有未包含的元素都将初始化为0。好的一点,我一直忘记这些元素在某些情况下是连续的伊森。嗯,它们是0,不是“0”。也许就是这样。@chris不,这是因为我使用了memcpy而不是memset:)嗯……幸好我很快就注意到了。@Rob感谢编辑,我以为他想要数组归零。是的,但是如果Luna想要数组归零,根本就没有问题了,因为这是所有数组e自动发生的元素在最后一个初始化元素之后。很好的一点,我总是忘记这些元素是连续的。嗯,它们是0,而不是“0”。也许就是这样。@chris不,这是因为我使用了memcpy而不是memset:)嗯……幸好我很快就注意到了。@Rob谢谢你的编辑,我以为他想要数组为零。是的,但是如果Luna想要array归零后,就不会有任何问题了,因为在最后一个初始化元素之后,所有数组元素都会自动发生这种情况。是的,没错,我正试图做与这个问题相同的事情,使用循环将使程序运行缓慢。是的,我正试图做与这个问题相同的事情,使用循环将使程序运行缓慢gram run Slower我知道这个解决方案,但它会使程序变慢为什么?这应该是最快的方法之一。我知道这个解决方案,但它会使程序变慢为什么?这应该是最快的方法之一。