Я применил свои собственные strcpys, чтобы найти, существует ли какая-либо разница между src как const char * & char *, но не обнаружите разницы между следующими 2 & оба работали одинаково.Почему strcpy принимает const char * для src вместо char *?
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;
}
Есть ли причина, по которой strcpy принимает указатель источника как const char * вместо char *?
Это не так. 'strcpy' принимает' const char * src'. –
ИМХО по историческим причинам. В большинстве случаев strcpy() может быть встроен, поэтому разница будет бесполезной в любом случае. – joop
Фактически ['strcpy'] (http://en.cppreference.com/w/c/string/byte/strcpy) имеет свой исходный аргумент, определенный как' const char * restrict' со стандартного C99. См. [эта ссылка] (http://en.cppreference.com/w/c/language/restrict) для получения дополнительной информации о ключе 'ограничение'. –