有时会用memcpy去复制数组,但是memcpy是怎么实现的呢?一直没想过,终酿成一个遗憾。
那句话说得好:不求甚解是成为一个优秀程序员的大忌讳。
亡羊补牢吧。。。
要实现这个函数:void memcpy(void* pDst, void* pSrc, int nSize),
要对pDst指向的内存进行写操作,但是不知道pDst的具体类型,似乎不好处理。
其实,char占1个字节,是最小单位,所以,可以将空指针强转成char*,再进行赋值。
这句话也说得好:就是这么简单。
void memcpy(void* pDst, void* pSrc, int nSize)
{
if (NULL == pDst || NULL == pSrc)
{
goto Exit0;
}
while (nSize--)
{
*(char*)pDst = *(char*)pSrc;
pDst = (char*)pDst + 1;
pSrc = (char*)pSrc + 1;
}
Exit0:
return;
}