关于c语言指针*p的概念问题

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