面试中面试官经常会让写程序,根据题目的难度会在算法和编程(www.cppentry.com)习惯上各有侧重.比如写一个memcpy函数,这个题算法简单明确,因此重点考察编程(www.cppentry.com)习惯、工程思想.
该题目的算法如下
0.1
[cpp]
void memcpy(void *dst, void *src, int count)
{
while(count--)
{
*dst = *src;
dst++;
src++;
}
}
问题是void*不能直接累加 *dst = *src也是不对的.
0.2
[cpp]
void memcpy(void *dst, void *src, int count)
{
unsigned char *pdst = (unsigned char *)dst;
unsigned char *psrc = (unsigned char *)src;
while(count--)
{
*pdst = *psrc;
pdst++;
psrc++;
}
}
在32位系统中,可复制的最多内存是多少 类型会不会不够用
内存复制不应该修改原始内存吧.
因此,函数声明修改如下
0.3
[cpp]
void memcpy(void *dst, const void *src, size_t count)
这样就万事大吉了吗
如果传入了空指针呢
接着修改吧