指针指针不起作用

时间:2015-04-20 19:39:38

标签: c++ pointers

在我的代码中,我试图通过更改指针目标和打印相同指针的值来创建循环。这段代码是我无限列表的方法。

#include <iostream>
using namespace std;

class pacjent
{
public:
    char nazwisko[20];
    pacjent*nastepny;
    pacjent();
    ~pacjent();
};

pacjent *POCZATEK = NULL, *KONIEC = NULL;

pacjent::pacjent() {
    cout << "Podaj nazwisko: ";
    cin >> nazwisko;
    if (POCZATEK == NULL) {
        POCZATEK = this;
        KONIEC = this;
    } else {
        KONIEC->nastepny = this;
        nastepny = NULL;
    }
}

pacjent::~pacjent() {
    POCZATEK = POCZATEK->nastepny;
}

pacjent* NOW = POCZATEK;
void drukuj() {
    /////////////////////////////////  LOOP MENTIONED
    // while(NOW->nastepny!=NULL)
    // {
    cout << NOW->nazwisko << endl; //do not work
    //     NOW=NOW->nastepny;
    //  cout << POCZATEK->nazwisko << endl; // works fine
    // }
} //////////////////////////////////


int main() {
    char SELECTOR;
    while (SELECTOR != 'q') {
        cin >> SELECTOR;
        switch (SELECTOR) {
        case 'n':
            KONIEC = new pacjent;
            break;
        case 'p':
            delete POCZATEK;
            break;
        case 'd':
            drukuj();
            break;
        default:
            break;
        }
    }
    return 0;
}

函数drukuj()不会打印'NOW'(我得到空屏幕)指针的内容,但POCZATEK工作正常。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

  

功能drukuj()不会打印“现在”的内容。 (我得到空屏幕)指针,但POCZATEK工作正常。有什么想法吗?

NOW初始化为:

pacjent* NOW = POCZATEK;

那时,POCZATEK的值为NULL。因此,NOW也会初始化为NULL。稍后在您的代码中,POCZATEK更改为指向新创建的对象,但不会更改NOW指向的位置。它仍然指向NULL

您可以确保NOWPOCZATEK始终指向同一个对象,方法是NOW引用指针并使用POCZATEK初始化它。

pacjent*& NOW = POCZATEK;

答案 1 :(得分:0)

pacjent* NOW = POCZATEK; // this is null

创建新的pacjent对象并为其分配您想要的值,然后尝试打印出来。