memcpy与strcpy实现

void * __cdecl memcpy(void *pvTo, const void *pvFrom, size_t size) { assert((pvTo != NULL) && (pvFrom != NULL)); //使用断言防止传递空地址 byte *pbTo = static_cast(pvTo); //防止改变pvTo的地址 byte *pbFrom = static_cast(pvFrom); //防止改变pvFrom的地址 if(pbTo > pbFrom && pbTo < pbFrom + size) //注意处理重叠区的数据 { for(size_t i = size -1; i >= 0; i--) { pbTo[i] = pbFrom[i]; } } else { while(size--) { *pbTo++ = *pbFrom++; } } return pbTo; } char *strcpy(char *pDest, const char *pSrc) { assert((pDest != NULL) && (pSrc != NULL)); //使用断言防止传递空地址 char *pTmp = pDest; while((*pDest++ = *pSrc++) != '/0') { //Do nothing } return pTmp; }  

你可能感兴趣的:(C/C++)