Считывание Неверных данных c6385

#c #function #pointers #multidimensional-array #compiler-errors

Вопрос:

Я новичок, и в данный момент я в основном просто создаю текстовую игру.

У меня есть функция, но, похоже, она изменяет неправильные элементы массива.

 void petStatRead(int statArr[5][7], int* iDPnt, string creature){
    int petID = *iDPnt;
    int LVL = statArr[0][6];
    cout << creature << "'s current Level is: " << LVL << endl;
    int EXP = statArr[0][7];
    cout << creature << "'s current EXP is: " << EXP << endl;
}
 

Вместо вывода [0][6] он выводит [0][7] и так далее.

Я получаю эту ошибку:

C6385 Считывание недопустимых данных из » statArr[0]»: читаемый размер составляет » 28 «байт, но может быть прочитано «32» байта.

[0][6] предполагается , что он хранит a 1 , в то время как другие хранят a 0 .

Но тогда это выводит 0 1 результат .

Я совершенно потерян, что я сделал не так?

Комментарии:

1. Доступ statArr[0][7] приводит к тому, что ваша программа ведет себя неопределенно (даже если вы, вероятно, получаете результат [1][0] ).

2. Индексы массива основаны на 0, поэтому допустимыми индексами для вашего statArr массива являются: statArr[0][0]..statArr[0][6] , statArr[1][0]..statArr[1][6] , … statArr[4][0]..statArr[4][6] . Таким образом , доступ statArr[0][7] технически находится за пределами 1-го int[7] массива, расположенного по адресу statArr[0] , он достигает 1-го int из 2-го int[7] массива, расположенного по адресу statArr[1] .

3. Зачем вы вообще храните эти данные в массиве? Если вы храните данные об уровне рядом с данными об опыте, вам почти наверняка лучше создать структуру/класс с полями m_experience и m_level .