3

私は C++ Primer の第 4 版を読んでおり、現在はポインターの演習を行っています。この演習では、配列を調べて要素を 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

4 に答える 4

3

ループは次のようになります。

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

return 0;final の前に置くこともお勧めします }

于 2012-11-25T19:32:10.537 に答える
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;
}

大成功のために。

于 2012-11-25T19:32:09.900 に答える
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

于 2012-11-25T19:33:40.817 に答える