我是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周期有效,它根据需要打印消息。
在一段时间内,它没有,甚至没有进入。我出于某种原因尝试更改条件(从相等到不相等),终端开始循环打印消息。
我什至尝试在条件下用'nullptr'更改'0',但是两个周期的结果都是相同的。我尝试打印第二个指针p2的位置,它在内存中。我在哪里做错了?
最佳答案
当你有
do{...}while(p == 0)
这意味着该循环应执行到
p
与0
的不同为止,如果p
等于0
,则循环将继续,如果与不同,它将退出循环。因此,如果结束,则
p
将不同于0。仅当p为等于等于
0
时,才会执行下一个循环,明白我的意思吗?这是一个working sample
关于c++ - 为什么while循环会导致指针出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59917334/