【问题标题】:Array iteration using for loop in C++在 C++ 中使用 for 循环进行数组迭代
【发布时间】:2020-06-10 18:24:49
【问题描述】:

假设我们有一个包含 5 个元素的数组,我必须使用 for 循环来迭代这个数组,如下所示:

int A[5]{2,3,5,9,1};
for(int i = 0; i<5; i++)
{
    cout<<i[A];
}

我可以使用 this(i[A]) 进行迭代,请解释一下它是如何工作的?

【问题讨论】:

  • 用什么语言? (添加标签。)
  • 不,您访问越界,因为i&lt;=5 应该是i&lt;5
  • 运行该代码时发生了什么?
  • 它在代码中工作,但我不知道它是如何工作的?

标签: c++ arrays for-loop iteration


【解决方案1】:

你的错误:

int A[5]{2,3,5,9,1};
for(int i = 0; i<=5; i++) // accessing i <= 5 (out of bound of array), do it i < 5
{
    cout<<i[A]; // print A[i] not i[A], that's incorrect, i ain't an array
}

如果您在 C++ 中做同样的事情,那么您可以改用 std::vector&lt;&gt;

考虑这个程序:

#include <iostream>
#include <vector>

int main(void)
{
    std::vector<int> A{2, 3, 5, 9, 1};

    for (int i = 0; i < A.size(); i++)
        std::cout << A[i] << ' ';

    std::cout << std::endl;

    return 0;
}

std::vector&lt;&gt; 在当今的 C++ 中有很多用法。您不再需要坚持使用数组的静态大小。

作为替代方案,您可以做同样的事情(如 C 风格):

#include <iostream>

int main(void)
{
    int A[]{2, 3, 5, 9, 1};
    size_t len = sizeof(A) / sizeof(A[0]);

    for (int i = 0; i < len; i++)
        std::cout << A[i] << ' '; // you're trying to access elements of 'A' not of 'i'

    std::cout << std::endl;

    return 0;
}

该程序动态分配数组大小并迭代A[i],直到i达到定义的数组大小。

【讨论】:

  • 我明白你的意思,但我想我的问题不正确,因为我想知道这个 i[A] 是如何正常工作的。
  • @RahulBalyan 变量 i 不是数组。
  • 是的,但是如果您尝试使用此特定语句进行迭代,它工作正常,我可以打印数组的所有元素。请自己尝试一下,你会知道的。
【解决方案2】:

这似乎是合法的。简单地说 ptr[count] 是 *(ptr + count) ,看起来你可以交换它们。 *(计数 + 指针)。一个需要是指针,另一个是整数。 40 年来从未见过它使用过。

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 2010-09-11
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多