C ++比较两个char来验证循环条件

时间:2015-03-15 16:15:54

标签: c++ pointers comparison

我创建了一个用于保存生物信息的结构,我使用char类型的变量来保存它的生物类型(A:Aphid,L:Ladybird)。

struct Creatures {
    int xco;
    int yco;
    char type;
    struct Creatures *next;
};
extern struct Creatures *creatureHead;
extern struct Creatures *creatureTail;

当我添加“生物”时,我会添加一个参数来识别它的生物类型。我还注释掉了检查值是否正确传递的行(它是)。

struct Creatures* add_Creature(int xcoord,int ycoord,char ctype) {
    struct Creatures *ptr = new Creatures;
    ptr -> xco = xcoord;
    ptr -> yco = ycoord;
    //cout << "ctype: " << ctype << endl;
    ptr -> type = ctype;
    //cout << "type: " << ptr->type << endl;
    ptr -> next = NULL;
    if (creatureHead == NULL) {
        creatureHead = creatureTail = ptr;
    }
    else {
        creatureTail -> next = ptr;
        creatureTail = ptr;
    }
    return ptr;
}

以下是我添加生物的示例:

add_Creature(xco,yco,'A');

然后我使用以下方法打印出所有蚜虫和瓢虫的表格,此时它没有输出任何内容,我不知道为什么:

void printStuff() {
    struct Creatures *ptr = new Creatures;
    cout << "============" << endl;
    cout << "Aphid Coords" << endl;
    cout << "============" << endl;
    while(ptr != NULL && (ptr->type == 'A')) {
        cout << "[" << ptr->xco << "][" << ptr->yco << "]" << endl;
    ptr = ptr->next;
    }
    cout << "============" << endl << endl;
    /////////////////////////////////////////////////////////////////
    cout << "===============" << endl;
    cout << "Ladybird Coords" << endl;
    cout << "===============" << endl;
    while(ptr != NULL && (ptr->type == 'L')) {
        cout << "[" << ptr->xco << "][" << ptr->yco << "]" << endl;
    ptr = ptr->next;
    }
    cout << "===============" << endl;
}

为什么我的print方法中的while循环不能验证并打印出正确的结果?

1 个答案:

答案 0 :(得分:1)

我不知道我是否遗漏了某些内容,但我没有看到您在ptr函数中声明的printStuff指针的初始化,因此它可能不是null但是“type”字段也可能不等于'A'。