memset是计算机中C/C++语言初始化函数。作用是将某一块内存中的内容全部设置为指定的值, 这个函数通常为新申请的内存做初始化工作
头文件:string.h
函数原型:void *memset(void *s, int c, size_t n);
参数说明:将以s为首的存储空间前n字节空间全部替换为参数c指定的数据
返回值:更新后的首地址s
【实例】
#include <memory.h>#include <stdio.h>void main( void ){char buffer[] = "This is a test of the memset function";printf( "Before: %s\n", buffer );memset( buffer, '*', sizeof(buffer)-1 );//这里buffer的大小-1是为了避免将字符串的结尾‘\0’也变成*printf( "After: %s\n", buffer );}
函数实现
第一种:
void* memcpy( void* dest, const void* src, size_t count ){if (count<0){printf("Invalid count number !./n");return (void*)0;}if(src==NULL||dest==NULL)return (void*)0 ;if ((unsigned int)dest==(unsigned int)src){printf("The source is equal with the destanation!./n");return dest;}char* d = (char*)dest;const char* s = (const char*)src;while(count--)*d++ = *s++;return dest;}
另一个实现,和上面类似,转贴高质量C++/C编程指南中的,供参考:
void *memcpy(void *pvTo, const void *pvFrom, size_t size){assert((pvTo != NULL) && (pvFrom != NULL));// 使用断言byte *pbTo = (byte *) pvTo;// 防止改变pvTo的地址byte *pbFrom = (byte *) pvFrom; // 防止改变pvFrom的地址while(size -- > 0 )*pbTo ++ = *pbFrom ++ ;return pvTo;}