Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 当我们可以在函数中使用strlen()来获取单词的长度时,为什么我们要将字符串的长度作为参数发送给函数?_C_String_Function_Parameters_Arguments - Fatal编程技术网

C 当我们可以在函数中使用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

我一直在思考这个问题有一段时间了,今天我遇到了一个教程,决定离开

internet上的许多教程都使用主函数中的strlen()来获取字符串的长度,并将其作为参数发送给函数。为什么我们不直接将字符串传递到函数中,并在函数中使用strlen()

例如:

为什么人们使用这个:

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);
}
超长

  • 节省CPU时间(
    strlen
    是一个
    O(n)
    函数,测量字符串需要时间)
  • 允许您传递子字符串或处理非空终止的字符数组

  • 有些函数采用您的方法并自行测量其输入字符串的长度。它是运行时效率和小型API便利性之间的折衷。

    如果它不是以null结尾的,则它不是字符串;空终止符是字符串本身的一部分。建议“…处理非空字符终止的字符数组。”