为什么strcpy使用const char*代替src而不是char*?

sni*_*per -1 c pointers

我实现了自己的strcpys来查找src与const char*和char*之间是否有任何区别,但是没有发现以下2和两者之间有任何区别.

char * my_strcpy(char*dest, char* src)
{
    while ('\0' != *src)
        *dest++ = *src++;
    *dest++ = '\0';
        return dest;
}

char * my_strcpy2(char*dest, const char* src)
{
    while ('\0' != *src)
        *dest++ = *src++;
    *dest++ = '\0';
    return dest;
}
Run Code Online (Sandbox Code Playgroud)

是否有任何理由strcpy将源指针作为const char*而不是char*?

art*_*rtm 6

是否有任何理由strcpy将源指针作为char*而不是const char*?

源指针应该是const char *.原因对于所有strcpy不打算在函数内意外更改源的函数(不仅仅是)都很常见.

该实践适用于库函数strcpy或您自己的自定义函数.与库函数一样strcpy,源不会发生意外更改.但对于您自己(或其他所有人)的自定义函数,任何事情都可能发生.如果你意外地修改它,那么你会得到一个编译错误告诉你.而这const正是有所作为的.