【发布时间】:2021-07-18 19:53:00
【问题描述】:
我实现了自己的 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;
}
strcpy 是否有任何理由将源指针作为 const char* 而不是 char*?
【问题讨论】:
-
它没有。
strcpy接受const char *src。 -
恕我直言,出于历史原因。在大多数情况下, strcpy() 可以内联,因此无论如何差异都是徒劳的。
-
实际上
strcpy自 C99 标准以来,其源参数定义为const char *restrict。参见例如this reference 了解有关restrict关键字的更多信息。 -
谷歌“常量正确性”。
-
顺便说一句,你的函数的返回值很奇怪。