首页 > 解决方案 > C ++初始化数组最后一个值是随机的

问题描述

我对此进行了很多搜索,但没有找到任何满意的答复。我正在编写一个小的数学算法来学习一些编程语言,因此,这是我的第一个 C++ 程序的一部分。但是,我似乎无法修复这个数组。尽管人们说数组中的随机值是由于数组未初始化,并且您应该像这样将它们初始化为您想要的值:int array[sizeOf] = {0},但它仅在此示例中起作用。如您所见,数组的所有值都设置为 0,除了最后一个,它似乎没有被初始化:是什么原因造成的,我该如何解决?

#include <iostream>
using namespace std;

int initialNumber;

int main()
{
    cout << "Enter Range value:" << endl;
    cin >> initialNumber; //get size

    cout << "Solving..." << endl << endl;

    //initialize basic ints to be used for calculations
    int limiter = initialNumber/2; //the max value we will ever have to multiply by
    int arraySize = initialNumber++; //size of the array
    int resultingFactorsArray[arraySize] = {0}; //main array

    //print each array item value
    for (int x = 0; x <= arraySize; x++) {
        cout << resultingFactorsArray[x] << endl; //print all array values
        //all values printed should be 0, but the last one is uninitialized
    }
}

标签: c++arraysrandominitialization

解决方案


数组是基于 0 的。意思是,在您的for循环中for (int x = 0; x <= arraySize; x++),该部分x <= arraySize应该是x < arraySize.

一个例子:

如果您声明数组大小10,则有效的数组索引为0,1,2,3,4,5,6,7,8,9(10 个总索引)。

如果您将其放入for循环中x <= 10,则您的最后一个索引将是array[10](未定义/未初始化)。

简而言之,您的初始化是正确的,只是您的for循环超出了范围。


推荐阅读