函数原型: void *memset(void *s, int ch, size_t n);
功能:将s中前n个字节 (typedef unsigned int size_t )用 ch 替换并返回 s 。
突出优点:在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法
实现:
void* My_memset(void* dst, int val, size_t size) //s指向的空间前size个字节,初始化ASCII为val的值
{
char* pdst = (char*)dst;
assert(NULL != dst);
while (size--)
{
*pdst = (char)val;
pdst++;
}
return dst;
}
--------------更新2017-2-27
void * Memset(void* src, int ch, size_t count)
{
assert(src != NULL);
void* start = src;
while (count--)
{
*(char*)src = (char)ch;
src = (char*)src + 1;
}
return start;
}
测试
#include<stdio.h>
#include<assert.h>
int main()
{
char arr[] = "abcdef";
My_memset(arr, '*', 3);
return 0;
}
结果; arr为 : “* * * def”
注意:函数第二个形参是int数值(具体使用是 对应的 char类型的字符),第三个形参是指针指向空间的前size个字节;不要把第二个形参和第三个形参用反了!!!