70,023
社区成员




int main(void)
{
int i;
char a[] = "12345";
// 先做a[3] = a[2]的话,输出结果是:1 1 2 3 5
// 先做a[1] = a[0]的话,输出结果是:1 1 1 1 5
memcpy(a + 1, a, 3);
for (i = 0; i < 5; i++)
printf("a[%d] = %c\n", i, a[i]);
return 0;
}
看memcpy怎么实现的了。void *mymemcpy(void *dest, const void *source, size_t count)
{
assert((NULL != dest) && (NULL != source));
//char *tmp_dest = (char *)dest;
//char *tmp_source = (char *)source;
char *tmp_dest = (char *)dest + count - 1;
char *tmp_source = (char *)source + count - 1;
while(count --)
//*tmp_dest ++ = *tmp_source ++;
*tmp_dest -- = *tmp_source --;
return dest;
}
void *
char * getMemery(){
static char m[] = "212313";
return m;
}
char * getMemery(){
const char * str = "212313"
char * m = malloc(strlen(str) + 1);
memcpy(m, str, strlen(str)+1);
return m;
}