我正在尝试将数组初始化为非零值:
BYTE byteArray[50];
memset(byteArray, 20, sizeof(byteArray)); // Works fine
int intArray[50];
memset(intArray, 20, sizeof(intArray)); // Does not work
Run Code Online (Sandbox Code Playgroud)
目前,我只是手动初始化数组:
// Initialise array manually
for (int pos = 0; pos < 50; pos++)
intArray[pos] = 20;
Run Code Online (Sandbox Code Playgroud)
我确实很欣赏memset设置内存范围中的每个字节,因此这不能按照我需要的多字节类型的方式工作(除了请求值为 的特殊情况0)。有没有办法memset使用多字节类型强制非零值,或者可能有替代库函数?
有没有办法使用多字节类型强制 memset 为非零值
不。
或者也许有一个等效的 C 库函数?
从来没听说过。相反,您可以使用一个简单的循环。
但既然您已经标记了 C++,那么该标准库中有一个适当的函数:std::fill或std::fill_n。
附言。memset 不仅适用于 0。它还适用于具有相同重复字节模式的所有数字。比如说~0。
| 归档时间: |
|
| 查看次数: |
2475 次 |
| 最近记录: |