strcpy —字符串的拷贝 函数的模拟实现
char* my_strcpy(char* dest,const char* src )
//my_strcpy前面加char*,实现链式访问 dest要求可改变,所以不能加const ,src是固定不变的,所以加上const
{
char *ret = dest;
assert(dest != NULL);
assert(src != NULL);
while(*src)
{
*dest = *src;
dest++;
src++;
}
*dest = *src;
return ret;
}
int main()
{
char arr[20] ={0};
my_strcpy(arr,"hello world");
return 0;
}
memcpy —内存的拷贝
void *memcpy(void dest, const void src, size_t count);
count的单位是字节数
int main()
{
//char arr[10];
//char *p = "abcdf";
//strcpy(); //字符串拷贝,遇到\0停止
int arr1[10];
int arr2[]= {1,2,3,4,5};
my_memcpy(arr1,arr2,20);
}
模拟实现,my_memcpy
void* my_memcpy(void*dest,const void*src,size_t count)
//void* 无类型的指针,用来存放地址,可以任何指针
{
void *ret=dest;
assert(dest!= NULL);
assert(src!= NULL);
//int a=10;
//void *p =&a;//写成char *p 会产生警告
//char ch =0;
//void *pc =&ch;
while(count--)
{
*(char*)dest= *(*char)src;
//(char*)dest++; //不可以后置++,因为void* 类型不明确
//(char*)src++;
++(char*)dest;
++(char*)src;
//或者写成:
dest = (char*)dest+1;
src= (char*)src+1;
}
return ret;
}