小编M.O*_*.O.的帖子

理解strlen函数 - 将const char*s赋值给const char*sc

下面是根据"标准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 memory pointers c-strings

4
推荐指数
1
解决办法
86
查看次数

C中的连接字符串 - "strcpy(s1 + = strlen(s1),s2)`

我试图理解一个连接字符串的方法,如"标准C库"中所提出的.

在讨论了如何连接两个字符串s1和s2之后.作者建议对于多个字符串(超过2个),

"......赞成这样一种形式,strcpy(s1 += strlen(s1), s2)可以节省重复的,不断延长的,重新扫描弦乐的初始部分..."(第395页)

我无法理解这段代码片段.我的理解是他将s1指针的长度添加到指针以便将Null字符的索引传递给strcpy,这样strcpy就不必循环遍历s1来找到Null字符而只能开始将s2复制到s1中,那是对的吗?

如果我的理解是正确的,那么当代替strcpy时,它如何导致任何效率,strlen仍然必须循环通过字符串来确定其长度?

c pointers c-strings

2
推荐指数
1
解决办法
195
查看次数

标签 统计

c ×2

c-strings ×2

pointers ×2

memory ×1