В функцию внутри конструктора переменные передаются в произвольном порядке

Моя проблема в том, что, если писать передачу переменных объекту класса engine в том же порядке, в котором они указаны в конструкторе, они все равно передаются в произвольном (или нет) порядке. Как это исправить?:

    class engine{
private:
    int vid_topl; // вид топлива
    int o_stup[3]; // объем каждой ступени
  int s_stup[3]; // скорость ступени
  int t_stup[3]; // время работы ступени
public:
    engine(int vi, int ob[3], int sk[3], int vr[3]) // СТРОКА 1
    {
        vid_topl = vi; 
  for (int i = 0; i < 3; i++){
    o_stup[i] = ob[i];
    s_stup[i] = sk[i];
    t_stup[i] = vr[i];
  }
    }
int get_topl() 
  {return vid_topl;}

int get_o_st(int i) 
  {return o_stup[i];}

int get_s_st(int i) 
  {return s_stup[i];}

int get_t_st(int i) 
  {return t_stup[i];}
.......
int i, v, o[3], s[3], t[3];
for (i = 0; i < 3; i ++)
{
  printf("Введите объем ступени %d: ", i + 1);
  scanf("%d", &o[i]); // объем
  printf("Введите конечную скорость ступени %d (в км/ч): ", i + 1);
  scanf("%d", &s[i]); // скорость
  printf("Введите время работы ступени %d (в секундах): ", i + 1);
  scanf("%d", &t[i]); // время
}
......
engine raketa(v, &o[3], &s[3], &t[3]);

Ввод такой:

Введите объем ступени 1: 100
Введите конечную скорость ступени 1 (в км/ч): 1000
Введите время работы ступени 1 (в секундах): 10
Введите объем ступени 2: 200
Введите конечную скорость ступени 2 (в км/ч): 2000
Введите время работы ступени 2 (в секундах): 10
Введите объем ступени 3: 300
Введите конечную скорость ступени 3 (в км/ч): 3000
Введите время работы ступени 3 (в секундах): 10

при проверке

for (i = 0; i < 3; i++){
printf("Объем %d: %d\n", i, raketa.get_o_st(i)); 
printf("Скорость %d: %d\n", i, raketa.get_s_st(i)); 
printf("Время %d: %d\n", i, raketa.get_t_st(i)); 
}

выдает

Вид топлива: 100
Объем 0: 100
Скорость 0: 100
Время 0: 1000
Объем 1: 3
Скорость 1: 200
Время 1: 2000
Объем 2: 0
Скорость 2: 300
Время 2: 3000

Ответы (1 шт):

Автор решения: Harry

А что за ерунду вы передаете в конструктор?

engine raketa(v, &o[3], &s[3], &t[3]);

Вы же передаете несуществующие массивы - за концами реальных! Вот так вызывайте:

engine raketa(v, o, s, t);
→ Ссылка