char * mycpy(char*dst,const char* src)
{
char *ret=dst;
while(*dst++=*src++);
*dst='\0';
return ret;
}
dst是先++后再赋值的,也就是说从[0]到[1]了,那么[0]的值岂不是没赋到
char * mycpy(char*dst,const char* src)
{
int idx=0;
while(src[idx]){
dst[idx]=src[idx];
idx++;
}
dst[idx]='\0';
return idx;
}
像这个我就能理解是从[0]开始赋值的,有哪位能帮忙解决下
后缀++的优先级比解引用*高,*dst++
等价于*(dst++)
后缀++返回的是原值然后自增,因此
while (*dst++ = *src++)
;
相当于
while (*dst = *src)
{
dst++;
src++;
}
dst++;
src++;
代码中的*dst='\0';
这句可以删掉,因为没必要,循环退出时dst
就已经拷贝了src
里的'\0'
dst++ 是先赋值再自加1 啊
指针和++优先级一样,由右向左,因此dest++ 等价于 (*dest)++ 。先赋值后地址+1