如何将char数组中的位全部设置为零?

问题描述 投票:0回答:2

我正在创建一个指向数组的char指针,并希望对其进行初始化,以便该数组中的所有元素都为0(以位为单位,所以示例:

char* buffer = new char[bufferSize];

buffer [0]至buffer [bufferSize]将在每个索引中存储'00000000'。因此,我试图在每个单元格中存储8位零。

我该如何初始化。我也应该使用fill()。

到目前为止,

fill(&buffer, &buffer[bufferSize], 0)

不起作用。

c++ arrays pointers bit
2个回答
1
投票

您可以使用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.

0
投票

通常,您可以执行以下操作:

memset(buffer, '\0', bufferSize);
© www.soinside.com 2019 - 2024. All rights reserved.