我正在创建一个指向数组的char指针,并希望对其进行初始化,以便该数组中的所有元素都为0(以位为单位,所以示例:
char* buffer = new char[bufferSize];
buffer [0]至buffer [bufferSize]将在每个索引中存储'00000000'。因此,我试图在每个单元格中存储8位零。
我该如何初始化。我也应该使用fill()。
到目前为止,
fill(&buffer, &buffer[bufferSize], 0)
不起作用。
您可以使用fill
,但是您必须记住它接受一对迭代器。指向数组元素的指针已经是数组的迭代器。不需要使用迭代器的地址来传递它,因此您的第一个参数是错误的。更正确的形式是
std::fill(buffer, buffer + bufferSize, 0);
或
std::fill_n(buffer, bufferSize, 0);
或者,您可以将新表达式本身中的数组初始化为零
char* buffer = new char[bufferSize] {} ;
// ^ - initializer, for char this will zero out the array.
通常,您可以执行以下操作:
memset(buffer, '\0', bufferSize);