char* buffer = new char[8]; memset(buffer, 255, 8);为什么不能存255,会报错
时间: 2023-06-27 19:00:50 浏览: 153
C++中memset函数用法详解
这是因为 `memset()` 函数将 `255` 转换为 `unsigned char` 类型,并将其值存储在内存中的每个字节中。因此,对于 `buffer` 数组中的每个字节,它们都被设置为 `11111111`,即十进制下的 `255`。
但是,如果你尝试将 `buffer` 数组中的任何一个元素作为字符来打印,你会发现输出的字符并不是 `255`,而是一个乱码字符,这是因为这个字符的 ASCII 码值为 `255`,但是除了少数操作系统和编译器外,大多数系统都将 `255` 视为控制字符或特殊字符。
所以,如果你想将 `buffer` 数组的每个元素设置为 `255`,你应该这样写:
```c++
char* buffer = new char[8];
for(int i=0; i<8; i++)
buffer[i] = 255;
```
或者简单地使用 `std::fill_n()` 函数:
```c++
char* buffer = new char[8];
std::fill_n(buffer, 8, 255);
```
这样就可以将 `buffer` 数组的每个元素都设置为 `255`,而不会出现问题。
阅读全文