在对这些内存操作时,这些函数首先,都是使用的是无类型指针,即泛型指针。其次,他们都是对字节进行操作的,因此这两点保证了他们可以对任何类型数据进行操作。
一、memset内存的初始化,我们给出memset函数的声明·
void *memset( void *dest, int c, size_t count );
第一个参数 void *dest 起始位置。
第二个参数 int c 初始化为什么值,一般根据自己的情况进行初始化。
第三个参数 size_t count 字节数的大小,就是你要初始化的空间大小。
下来我们对这个memset()函数进行实现:
1、判断参数的有效性。
2、保护参数,因为最终你要返回一直指针所指位置以后的数据,我们就要进行保护参数。
3、这里我们要注意保护参数的同时要转换类型,对于空类型指针来说可以转换为任何类型的指针,因此这一就是我们为什么要用空类型指针。
4、就是进行初始化的工作。
void* my_memset(void* dest, int c, size_t count)
{
//判断参数有效性
assert(dest != NULL);
//保护参数
char* p1= (char*)dest;//转换类型
while (count-- != 0)
{
*p1++ = c;
}
return