C 当我们可以在函数中使用strlen()来获取单词的长度时,为什么我们要将字符串的长度作为参数发送给函数?
我一直在思考这个问题有一段时间了,今天我遇到了一个教程,决定离开 internet上的许多教程都使用主函数中的strlen()来获取字符串的长度,并将其作为参数发送给函数。为什么我们不直接将字符串传递到函数中,并在函数中使用strlen() 例如: 为什么人们使用这个:C 当我们可以在函数中使用strlen()来获取单词的长度时,为什么我们要将字符串的长度作为参数发送给函数?,c,string,function,parameters,arguments,C,String,Function,Parameters,Arguments,我一直在思考这个问题有一段时间了,今天我遇到了一个教程,决定离开 internet上的许多教程都使用主函数中的strlen()来获取字符串的长度,并将其作为参数发送给函数。为什么我们不直接将字符串传递到函数中,并在函数中使用strlen() 例如: 为什么人们使用这个: int function (const char * word1, int len1, const char * word2, int len2){ ... } int main (){ distance (w
int function (const char * word1, int len1, const char * word2, int len2){
...
}
int main (){
distance (word1, strlen(word1), word2, strlen(word2));
}
与此相反:
int function (char * word1, char * word2){
...
int len1 = strlen(word1);
int len2 = strlen(word2);
...
}
int main (){
distance (word1, word2);
}
超长
strlen
是一个O(n)
函数,测量字符串需要时间)有些函数采用您的方法并自行测量其输入字符串的长度。它是运行时效率和小型API便利性之间的折衷。如果它不是以null结尾的,则它不是字符串;空终止符是字符串本身的一部分。建议“…处理非空字符终止的字符数组。”