Во-первых, вы никогда не увеличиваете numToPrint
, поэтому вы никогда не собираетесь печатать больше, чем значение numbers[0]
. Как минимум измените свой код на:
while(loopIterator < size){
cout << numbers[numToPrint++] << endl;
loopIterator++;
}
Во-вторых, поскольку ваш цикл while
использует тест i < size
, вы на последней итерации цикла будете получать доступ к памяти вне numbers
для вашего указателя b
и, возможно, поменять его значение в последний слот numbers
(т. е. где a
указывает на). Вы хотите изменить свой тест на i < (size - 1)
, чтобы избежать этого сценария. Например, если в i == 0
у вас есть a = &numbers[0]
и b = &numbers[1]
, то к моменту, когда i == 12
, вы получите a = &numbers[12]
и b = &numbers[13]
... значение, b
в этом случае указывает на конец массива. В зависимости от того, как ваш компилятор настроил стек, и от того, как вы распределили numbers
в стеке, это может фактически привести к хаосу в вашей программе, если вы в итоге наберете b
, указывающим на структуры данных записи активации для Ваша main()
функция, и, в свою очередь, портит ее.