内存操作库函数memset

头文件cstring中声明: void * memset(void * dest,int ch,int n); 将从dest开始的n个字节,都设置成ch。返回值是dest。ch只有最低的字节起作用 将szName的前10个字符,都设置成’a’:

char szName[200] = “”;
memset( szName,’a’,10);
cout << szName << endl;

输出:aaaaaaaaaa 将数组内容全部设置成0:

int a[100];
memset(a,0,sizeof(a));

结果数组a的所有元素都变成0

内存操作库函数memcpy

头文件cstring中声明: void * memcpy(void * dest, void * src, int n); 将地址src开始的n个字节,拷贝到地址dest。返回值是dest。 将数组a1的内容拷贝到数组a2中去,结果是a2[0] = a1[0], a2[1] = a1[1]……a2[9] = a1[9] :

int a1[10];
int a2[10];
memcpy( a2, a1, 10*sizeof(int));

编写内存操作库函数memcpy

void * MyMemcpy( void * dest , const void * src, int n)
{
char * pDest = (char * )dest;
char * pSrc = ( char * ) src;
for( int i = 0; i < n; ++i )
{
//逐个字节拷贝源块的内容到目的块
* (pDest + i) = * ( pSrc + i );
}
return dest;
}