下面是根据"标准C库,strlen.c的实现,
size_t strlen(const char *s){
const char *sc;
for(sc = s; *sc != '\0'; ++sc)
return (sc-s); }
Run Code Online (Sandbox Code Playgroud)
我对合法性的理解sc = s是否正确?
sc=s是一个合法的赋值,因为两个变量都被声明为const,都保护s指向的对象.在这种情况下,改变sc或s都指向但是任何赋值(或引用?)*s或者sc是非法的是合法的.
我试图理解一个连接字符串的方法,如"标准C库"中所提出的.
在讨论了如何连接两个字符串s1和s2之后.作者建议对于多个字符串(超过2个),
"......赞成这样一种形式,
strcpy(s1 += strlen(s1), s2)可以节省重复的,不断延长的,重新扫描弦乐的初始部分..."(第395页)
我无法理解这段代码片段.我的理解是他将s1指针的长度添加到指针以便将Null字符的索引传递给strcpy,这样strcpy就不必循环遍历s1来找到Null字符而只能开始将s2复制到s1中,那是对的吗?
如果我的理解是正确的,那么当代替strcpy时,它如何导致任何效率,strlen仍然必须循环通过字符串来确定其长度?