c语言strlen中strlen函数是如何计算的,如图的例题可以解释一下吗?其中的\是怎么计算的?

版权声明:本文为博主原创文章未经博主允许不得转载。 /xyj/article/details/

}//从字符串第一个字符起计数只遇到字符串结束标志'\0’停止

[1]源字符串参数用const修饰,防止修改源字符串
(A)不检查指针的有效性,说明答题者不注重代码的健壮性
char *转换为bool即是类型隐式转换,这种功能虽然灵活但更多的是导致出错概率增大和维护成夲升高。
直接使用常量(如本例中的0)会减少程序的可维护性而使用NULL代替0,如果出现拼写错误编译器就会检查出来。
循环体结束后dst芓符串的末尾没有正确地加上’\0’。

  1. 为什么要返回char*类型;
    为了实现链式连接返回内容为指向目标内存的地址指针,这样可以在需要字符指针的函数中使用strcpy,例如strlen(strcpy(str1, str2))
  2. 源地址和目标地址出现内存重叠时,如何保证复制的正确性;
    内存重叠上面的实现无法完成正常复制c运行库中strcpy函数实现,还加入了检查内存重叠的机制:
//检查传入参数的有效性 _Dest和_Source的内存地址有三种排列组合: 第一种情况和第三种情况直接从低位芓节开始复制,即可; 第二种情况必须从高位字节开始复制,才能保证复制正确

我要回帖

更多关于 c语言strlen 的文章

 

随机推荐