目前正在做 CS50 讲座,在第 2 周,从大约 56:45 开始,在此视频 ( https://video.cs50.net/2016/fall/lectures/2?t=56m50s ) 中,他提到 strlen
函数应移至初始化变量部分for
循环,而不是留在条件部分,因为将其留在条件部分会使计算机每次 for
运行 strlen
函数> 循环增量。
好吧,我明白了,但是建议的解决方案——将其移至变量声明部分,并不能解决问题,不是吗?因为它仍在 for
循环中,所以每次 for
循环迭代时,看起来 strlen
函数仍在检查。
我错了吗?
最佳答案
嗯,strlen函数不会在for循环中每次都被调用,因为我们在for循环之前存储了strlen的值, 它看起来像这样
`int n= strlen(s);
for(int i=0;i<n;i++)
{
code
}
`
一旦 strlen 的值存储在 n 中,计算机只需访问 n 而不是从 string.h 库一次又一次地访问 strlen 希望这个答案有帮助:)
关于CS50:For循环设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43647826/