C ++ - 用另一个替换数组的int元素

时间:2012-11-25 19:26:36

标签: c++ arrays scope

我一直在阅读第四版C ++入门,现在我正在进行指针练习。练习要求使程序通过一个数组并用0替换元素。到目前为止我有这个:

#include <iostream>

using namespace std;

using std::cout;
using std::endl;

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i != 5; i++)
        arr[i] = 0;
        cout << arr[i] << endl;
}

但是我收到了一个错误:

  

name lookup of 'i' changed for ISO 'for' scoping

如何更改元素?

4 个答案:

答案 0 :(得分:3)

你的循环应该是这样的:

for (int i = 0; i != 5; i++) {
  arr[i] = 0;
  cout << arr[i] << endl;
}

我还建议您将return 0;放在最终}之前。

答案 1 :(得分:1)

for (int i = 0; i != 5; i++)
    arr[i] = 0;
    cout << arr[i] << endl;

您忘记了{}。这意味着从cout开始的行目前不是循环的一部分,因此i超出了范围。

这个错误有点误导,因为它关注的是使用这个问题很多年以前。

但与其他一些语言不同,块范围由{}定义,而不是缩进。因此,写:

for (int i = 0; i != 5; i++) {
    arr[i] = 0;
    cout << arr[i] << endl;
}

取得巨大成功。

答案 2 :(得分:0)

嗯,它应该是这样的:记住5个元素只来自数组索引0 to 4

#include <iostream>

using namespace std;

using std::cout;
using std::endl;

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    for (int i = 0; i < 5; i++){
        arr[i] = 0;
        cout << arr[i] << endl;
    }
}

!=更改为<并添加for循环的Curly括号。

答案 3 :(得分:-1)

您的for循环缺少它的主体。你需要大括号

arr[i] = 0;
cout << arr[i] << endl;

所以编译器知道代码是for循环的主体。