有时会用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; }