Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.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++ 如何将包含其他结构和数组的整个结构对象数组归零?_C++ - Fatal编程技术网

C++ 如何将包含其他结构和数组的整个结构对象数组归零?

C++ 如何将包含其他结构和数组的整个结构对象数组归零?,c++,C++,如何以更标准的方式将包含其他结构、数组等的整个结构对象数组归零 在我的例子中,它是INPUT结构的对象 下面的代码是否正确 INPUT newline_input[4] = {0}; 或者我应该使用类似于std::memset 提前谢谢 您的代码的定义将起作用,更好的是: INPUT newline_input[4] = {}; 您的代码将起作用,更好的是: INPUT newline_input[4] = {}; 您的代码将起作用,更好的是: INPUT newline_input[4]

如何以更标准的方式将包含其他结构、数组等的整个结构对象数组归零

在我的例子中,它是
INPUT
结构的对象

下面的代码是否正确

INPUT newline_input[4] = {0};
或者我应该使用类似于
std::memset

提前谢谢


您的代码的定义将起作用,更好的是:

INPUT newline_input[4] = {};

您的代码将起作用,更好的是:

INPUT newline_input[4] = {};

您的代码将起作用,更好的是:

INPUT newline_input[4] = {};

您的代码将起作用,更好的是:

INPUT newline_input[4] = {};

就我所见,只有第一个数组元素的第一个元素会被设置为值,所以只有当它在这里被设置为零时才是正确的。如果它是“={1}”,并且您希望所有元素都是1,那么它将失败,因为元素是{1,0,0…等等}

我不喜欢“=”,因为它看起来会调用赋值运算符(这与此结构无关,但在其他情况下可能会有问题)

如果数组是全局数组,它的内存将为零,但所需的值为零是偶然的。如果数组位于堆栈上,则随机值(堆栈上的任何值)将填充数组

C++14时代的初始化有点复杂

INPUT newline_input[4] {}; // empty value initialization
因此,对于包含使用语法4的
联合的数据,请使用empty

T object {};
然后是效果3,然后是效果2(C++14)

然后应该打电话

这些内容未知的联合在没有构造函数的情况下提供时是一个问题,因为程序员必须知道如何将它们置于定义良好的状态

使用列表初始化看起来太像赋值和

INPUT newline_input[4] = {0};
or
INPUT newline_input[4] = {};
它将在中使用语法10,后面跟一个数组/struct/union作为输入。由于初始值设定项子句的数量小于数组长度,因此将使用此效果

如果初始值设定项子句的数目小于 成员或初始值设定项子句完全为空,剩余的 成员由其大括号或相等的初始值设定项初始化,如果 在类定义中提供,否则(从C++14开始)为空 列表,执行值初始化。如果引用的成员 类型是这些剩余成员之一,程序的格式不正确 (无法初始化引用的值)


但是标准礼让会的成员已经从这个表单[链接到Bjarne S.所说的地方]转移到了初始化值。

据我所知,只有第一个数组元素的第一个元素会被设置为值,所以只有在这里设置为零才是正确的。如果它是“={1}”,并且您希望所有元素都是1,那么它将失败,因为元素是{1,0,0…等等}

我不喜欢“=”,因为它看起来会调用赋值运算符(这与此结构无关,但在其他情况下可能会有问题)

如果数组是全局数组,它的内存将为零,但所需的值为零是偶然的。如果数组位于堆栈上,则随机值(堆栈上的任何值)将填充数组

C++14时代的初始化有点复杂

INPUT newline_input[4] {}; // empty value initialization
因此,对于包含使用语法4的
联合的数据,请使用empty

T object {};
然后是效果3,然后是效果2(C++14)

然后应该打电话

这些内容未知的联合在没有构造函数的情况下提供时是一个问题,因为程序员必须知道如何将它们置于定义良好的状态

使用列表初始化看起来太像赋值和

INPUT newline_input[4] = {0};
or
INPUT newline_input[4] = {};
它将在中使用语法10,后面跟一个数组/struct/union作为输入。由于初始值设定项子句的数量小于数组长度,因此将使用此效果

如果初始值设定项子句的数目小于 成员或初始值设定项子句完全为空,剩余的 成员由其大括号或相等的初始值设定项初始化,如果 在类定义中提供,否则(从C++14开始)为空 列表,执行值初始化。如果引用的成员 类型是这些剩余成员之一,程序的格式不正确 (无法初始化引用的值)


但是标准礼让会的成员已经从这个表单[链接到Bjarne S.所说的地方]转移到了初始化值。

据我所知,只有第一个数组元素的第一个元素会被设置为值,所以只有在这里设置为零才是正确的。如果它是“={1}”,并且您希望所有元素都是1,那么它将失败,因为元素是{1,0,0…等等}

我不喜欢“=”,因为它看起来会调用赋值运算符(这与此结构无关,但在其他情况下可能会有问题)

如果数组是全局数组,它的内存将为零,但所需的值为零是偶然的。如果数组位于堆栈上,则随机值(堆栈上的任何值)将填充数组

C++14时代的初始化有点复杂

INPUT newline_input[4] {}; // empty value initialization
因此,对于包含使用语法4的
联合的数据,请使用empty

T object {};
然后是效果3,然后是效果2(C++14)

然后应该打电话

这些内容未知的联合在没有构造函数的情况下提供时是一个问题,因为程序员必须知道如何将它们置于定义良好的状态

使用列表初始化看起来太像赋值和

INPUT newline_input[4] = {0};
or
INPUT newline_input[4] = {};
它将在中使用语法10,后面跟一个数组/struct/union作为输入。由于初始值设定项子句的数量小于数组长度,因此将使用此效果

如果初始值设定项子句的数目小于 成员或初始值设定项子句完全为空,剩余的 成员由大括号或等式初始化