Я новичок в c ++, я недавно начал изучать указатели, я пытался сделать простую тестовую программу:
struct test {
int a;
double b;
test *next;
test() : a(0), b(0), next(nullptr) {}
test(int v1, double v2) : a(v1), b(v2), next(nullptr) {}
test(int v1, double v2, test *n) : a(v1), b(v2), next(n) {}
}
Чем в основном я пробовал это:
int count = 0;
test *p;
test *p2 = new test();
do {
cout << "Hello" << endl;
cout++;
if (count>5) {
p = p2;
}
}while(p==0);
while (p==0) {
cout << "Hello" << endl;
count++;
if (count>5) {
p = p2;
}
}
Цикл do-while работает, он печатает сообщение так, как я хочу.
В цикле while это не так, он даже не удосужился войти. Я пытаюсь изменить условие (с равного на не равное) «по какой-то причине», и терминал начал печатать сообщение в l oop.
Я даже пытаюсь изменить в условии «0 'с' nullptr ', но результат одинаков для обоих циклов. Я пытаюсь напечатать местоположение второго указателя, p2, и это в памяти. Где я делаю не так?