【问题标题】:What is the OPTIMAL way to iterate through an array or string in C?在 C 中遍历数组或字符串的最佳方法是什么?
【发布时间】:2021-09-20 12:32:51
【问题描述】:

我找到了 thisthis 以及其他一些人,但没有一个能真正回答我的问题。

我已经完成了:

while ( *arr )

while ( *arr[i] != '\0' )

不知道有没有更好的办法

【问题讨论】:

  • while ( *arr[i] != '\0' ) 仅适用于字符串
  • 您展示的两个示例并不相同。另外,for (int i = 0; i < len; i++){ /* Use arr[i] */ } 有什么问题?
  • 通常只有字符串的末尾有一个终止符。一些数组可能有终止符,它可能是也可能不是零。否则,您将在 for 循环中使用数组中的长度(元素数)。哪个是最“最佳”的?测试它并分析和测量!
  • 你为什么想知道?这真的是您的程序(分析和测量)中的瓶颈,您需要找到另一种方法来迭代数组吗?否则,除非这是您代码中的前三大瓶颈(很可能不是,我的意思是循环本身),否则为微优化而烦恼是不值得的。

标签: c


【解决方案1】:

第一个是检查字符串列表是否以 NULL 指针结尾;第二个是检查字符串列表是否以空*字符串结尾。

*我在这里假设i 为零;否则这个问题没有意义。

使用 NULL 作为字符串列表的终止符对于列表的创建者和列表的使用者来说总是更快的 API 设计。


或者,您的意思是询问while (*arr) 是比while (*arr != '\0') 快还是慢。如果您的编译器不是真正古老的,那么这些编译器会编译成相同的东西,所以没有区别。做任何更容易阅读的事情。

【讨论】:

    猜你喜欢
    • 2012-03-04
    • 2013-05-13
    • 2010-09-05
    • 2016-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2012-07-16
    • 2011-04-24
    相关资源
    最近更新 更多