Может ли кто-нибудь объяснить, почему указатели перезаписываются, когда переменные объявляются внутри al oop?
Например, с учетом следующего фрагмента и ввода пользователем 1 и 2. Я ожидаю, что pNums
массив содержит 2 указателя на 2 целых числа, содержащих соответственно значения 1 и 2.
Но вместо этого консоль выводит 2
и 2
;
#include <iostream>
using namespace std;
//Input "1 2"
int main() {
int* pNums[2];
for(int i = 0; i < 2; i++){
int num;
cin >> num;
pNums[i] = (&num);
}
cout << (*pNums[0]) << endl;
cout << (*pNums[1]) << endl;
}
Почему это так ? И как мне обойти это? Что если, например, мы не знаем, сколько чисел введет пользователь, и вместо for
l oop у нас будет while
l oop? Пока не будут выполнены некоторые условия, мы хотим продолжать создавать новые указатели и сохранять их в pNums
векторе?