-
函数原型
void *memset(
void *dest,
int c,
size_t count
);
Sets the first count characters of dest to the character c. -
对于字符串的使用
#include <memory.h>
#include <stdio.h>
int main( void )
{
char buffer[] = "This is a test of the memset function";
printf( "Before: %s\n", buffer );
memset( buffer, '*', 4 );
printf( "After: %s\n", buffer );
int g_slot[2] = {0};
memset(g_slot, 2, sizeof(int));
cout << "g_slot[0] = " << hex<< g_slot[0] << ", g_slot[1] = " << hex << g_slot[1];
memset(g_slot, 12, sizeof(int));
cout << "g_slot[0] = " << hex<< g_slot[0] << ", g_slot[1] = " << hex << g_slot[1];
}
- 输出结果
- 对于int 类型的使用
memset(void *s, int ch,size_t n);中ch实际范围应该在0~~255,因为该函数只能取ch的后八位赋值给你所输入的范围的每个字节,比如int a[5]赋值memset(a,-1,sizeof(int )*5)与memset(a,511,sizeof(int )*5) 所赋值的结果是一样的都为-1;因为-1的二进制码为(11111111 11111111 11111111 11111111)而511的二进制码为(00000000 00000000 00000001 11111111)后八位都为(11111111),所以数组中每个字节,如a[0]含四个字节都被赋值为(11111111),其结果为a[0](11111111 11111111 11111111 11111111),即a[0]=-1,因此无论ch多大只有后八位二进制有效,而后八位二进制 [2] 的范围在(0~255)中改。而对字符数组操作时则取后八位赋值给字符数组,其八位值作为ASCII [3] 码。
其他注意事项请参考:
https://baike.baidu.com/item/memset/4747579?fr=aladdin