c++ - 为什么while循环会导致指针出现问题?

标签 c++ while-loop function-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;
    }
}

do-while周期有效,它根据需要打印消息。

在一段时间内,它没有,甚至没有进入。我出于某种原因尝试更改条件(从相等到不相等),终端开始循环打印消息。

我什至尝试在条件下用'nullptr'更改'0',但是两个周期的结果都是相同的。我尝试打印第二个指针p2的位置,它在内存中。我在哪里做错了?

最佳答案

当你有

do{...}while(p == 0)

这意味着该循环应执行到p0的不同为止,如果p等于0,则循环将继续,如果不同,它将退出循环。

因此,如果结束,则p将不同于0。

仅当p为等于等于0时,才会执行下一个循环,明白我的意思吗?

这是一个working sample

关于c++ - 为什么while循环会导致指针出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59917334/

相关文章:

python - 如何在 OpenCV 中检测这是谁的脸?

c++ - Linux promise 的内存将超过其提供的内存。

c - 将函数指针从 Fortran 传递到 C,与 c_f_procpointer 相反

function-pointers - 在 javascript 中,定义内联函数与将其作为引用传递有何权衡?

c - 为什么函数指针可以带或不带运算符地址使用?

c++ - String 加 Char - 发生了什么?

c++ - 在没有 GUI 设计器的情况下实现 GUI 的最佳方法是什么?

php - While in while 只显示一行?

javascript - 否则结果不会显示在 while 循环中 - javascript

Javascript 压扁深层嵌套的子项