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作为输入。由于初始值设定项子句的数量小于数组长度,因此将使用此效果
如果初始值设定项子句的数目小于
成员或初始值设定项子句完全为空,剩余的
成员由大括号或等式初始化