C++ 中的数组分配错误,我的代码有什么问题?

Array assignment error in C++, What is wrong with my code?

我正在 CodeBlocks 中尝试此代码,但结果是一些随机数! 如果您检查代码并让我知道我的错误是什么,我将不胜感激。它应该导致 25 的乘数:

#include <iostream>

using namespace std;

main(){

    const int array_size = 10;
    int numbers[array_size];
    int counter = 0;

    while(counter < array_size){
        numbers[counter] = 25 * counter;
        counter++;
        cout << "number[" << counter << "] = " << numbers[counter] << endl;
    }
}

提前致谢。

您在设置 numbers[counter] 的值后递增 counter。在那之后。 numbers[counter](新值为counter)是一个新的未初始化元素。

您应该在 打印后移动增量

#include <iostream>

using namespace std;

int main(){

    const int array_size = 10;
    int numbers[array_size];
    int counter = 0;

    while(counter < array_size){
        numbers[counter] = 25 * counter;
        cout << "number[" << counter << "] = " << numbers[counter] << endl;
        counter++;
    }
}

或者干脆避免使用数组(在这种情况下):

#include <iostream>

int main(){

    const int array_size = 10;
    int counter = 0;

    while(counter < array_size){
        std::cout << "number[" << counter << "] = " << 25 * counter << std::endl;
        counter++;
    }
}

另一种方法是使用两个循环——一个用于初始化,一个用于打印:

#include <iostream>

using namespace std;

int main(){

    const int array_size = 10;
    int numbers[array_size];
    int counter = 0;

    while(counter < array_size){
        numbers[counter] = 25 * counter;
        counter++;
    }

    counter = 0;
    while(counter < array_size){
        cout << "number[" << counter << "] = " << numbers[counter] << endl;
        counter++;
    }
}

您在递增变量 counter 后输出数组的未初始化元素 counter

    counter++;
    cout << "number[" << counter << "] = " << numbers[counter] << endl;

错误的原因是使用了不合适的循环。

最好使用 for 循环而不是 while 循环。

例如

for ( int counter = 0; counter < array_size; counter++ ){
    numbers[counter] = 25 * counter;
    cout << "number[" << counter << "] = " << numbers[counter] << endl;
}

注意不带参数的main函数要这样声明

int main()

也就是说你不能省略return类型的函数。

更改此代码

const int array_size = 10;
    int numbers[array_size];
    int counter = 0;

    while(counter < array_size){
        numbers[counter] = 25 * counter;
        cout << "number[" << counter << "] = " << numbers[counter] << endl;
        counter++;
    }