gpt4 book ai didi

c - 在循环条件中使用 strlen() 是否比仅检查空字符慢?

转载 作者:太空狗 更新时间:2023-10-29 16:34:33 24 4
gpt4 key购买 nike

我读到使用 strlen 比这样的测试更昂贵:

我们有一个长度为 100 个字符的字符串 x

我认为

for (int i = 0; i < strlen(x); i++)

比这段代码更昂贵:

for (int i = 0; x[i] != '\0'; i++)

这是真的吗?也许第二个代码在某些情况下不起作用,那么使用第一个更好吗?

下面的会不会更好一些?

for (char *tempptr = x; *tempptr != '\0'; tempptr++)

最佳答案

for (int i=0;i<strlen(x);i++)

此代码在每次迭代时调用 strlen(x)。因此,如果 x 的长度为 100,则 strlen(x) 将被调用 100 次。这是非常昂贵的。此外,strlen(x) 也每次都以与 for 循环相同的方式迭代 x。这使其复杂度为 O(n^2)。

for (int i=0;x[i]!='\0';i++)

此代码不调用任何函数,因此会比前面的示例快得多。由于它只迭代一次循环,所以复杂度为 O(n)。

关于c - 在循环条件中使用 strlen() 是否比仅检查空字符慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3388029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com