strcpy为什么要返回值

strcpy为何要返回值?
char * strcpy( char *a_szDest, char *a_szSrc)
{
 assert((a_szDest != NULL)&&(a_szSrc != NULL));
 char *p = a_szDest;
 while((*a_szDest++ = *a_szSrc++) != '\0')
 return p;

strcpy函数的实参本身就是指向首地址的,函数内部都是复制的指针,无论怎么操作也不影响外面的指针,为什么strcpy函数要传递个首地址出去?
难道说会有特殊情况会改变首地址?传出去做校验?求指导

------解决方案--------------------
为了实现链式表达式