关于返回临时指针的疑问解决方法

关于返回临时指针的疑问
今天在看高质量C++编程指南,最后的习题

C/C++ code

char *strcpy(char *dest, const char *src)
{
    assert(src != NULL && dest != NULL);
    char *address = dest;
    while((*dest++ = *src++) != '\0' )
     ;
    return address;
}

}

无法理解为啥要弄个临时的变量,而不直接返回dest。求好心人帮忙

------解决方案--------------------
dest都自增多少次了?address记录了字符串开始地址,最终返回它。