为什么循环会导致指针出现问题?
Why while cycle causes problem with pointers?
我是 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;
}
}
做同时循环有效,它根据需要打印消息。
在循环中,它没有,它甚至懒得进入。我尝试"出于某种原因"更改条件(从等于到不等于(,终端开始循环打印消息。
我什至尝试在这种情况下将"0"更改为"nullptr",但两个周期的结果是相同的。我尝试打印第二个指针 p2 的位置,它位于内存中。我哪里做错了?
代码看起来很奇怪,但这就是问题所在:您在第一次执行时更改了p
的值。此循环存在是因为 p 不再为 0。那么它怎么能进入具有相同条件的第二个循环呢?必须重置 p 的值。
当你有
do{...}while(p == 0)
这意味着循环应该执行,直到p
与0
不同,如果p
等于0
循环将继续,如果不同,它将退出循环。
因此,如果它结束,p
将与 0 不同。
下一个循环只有在p等于0
时才执行,明白我的意思吗?
这是一个工作示例
相关文章:
- 关于 c++ 函数中指针赋值的简单问题
- 链表指针问题
- C++ 关于指针取消引用的技术问题
- C++中的指针和常量问题不大
- 包含矢量指针的结构的内存释放问题
- 指针问题:从不兼容的类型"int"分配给"int *"
- 将字节数组转换为带有字节序问题的指针
- 关于如何使用指向主窗口的指针的 QT 问题
- 当成员值从指针更改为非指针时,C++常量问题
- 为什么循环会导致指针出现问题?
- 使用指针计算堆栈问题的大 O 表示法
- 构造函数 (C++) 中的 char 指针参数存在问题
- 指向包含对齐 C 结构C++类的 C 指针的对齐问题
- 涉及指针和手动实现的矩阵类的问题
- 从基指针到派生的强制转换问题
- 迭代器的指针操作问题
- 64 位迁移问题:指针更改
- C++模板使用问题指针
- 跳到C++第13章练习问题4-指针
- 用std::pair数组初始化std::map问题(指针错误?)