CS50:For循环设计

标签 c for-loop cs50 strlen

目前正在做 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/

相关文章:

c - malloc() : memory corruption

c - 将基于 makefile 的 C 项目导入 IDE

python - Python 中的 FOR 循环中是否有 'skip-range' 技术?

python - PyQt - 使用 For 循环创建菜单 :

c - 使用 crypt.h 中的 crypt()

c - 为什么我的程序不打印名字的首字母? (CS50 缩写程序)

c++ - 从我的应用程序启动网页

c - Objective-C UTF-8 和 UTF-16 字符串(以字节表示)的差异

java - 当从 ArrayList 中删除多个项目时,为什么最好使用 while 循环而不是递减 for 循环?

c - ftell 如何影响以 'r' 而不是 'rb' 模式读取的二进制文件?