我一直在阅读第四版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
如何更改元素?
答案 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循环的主体。