链接列表在printf()之后丢失所有值

时间:2013-07-27 16:20:48

标签: c linked-list

typedef struct list_node
{
    char* dataPtr;
    struct list_node* next;
}ListNode;

typedef struct list
{
    ListNode* head;
    ListNode* tail;
}List;

void main()
{

    List lst;
    ListNode n1, n2, n3;

    lst.head = &n1;
    lst.tail = &n3;

    n1.dataPtr = "one";
    n1.next = &n2;
    n2.dataPtr = "two";
    n2.next = &n3;
    n3.dataPtr = "three";
    n3.next = NULL;

    printf("Hello World!\n");
}

在使用调试器查看代码时,printf()列表会丢失所有值。为什么?

2 个答案:

答案 0 :(得分:1)

变量lst及其节点超出范围,因为printf语句是块中的最后一个语句。

(作为旁注,请勿使用void main()但请使用int main()并在结尾处返回0。)

答案 1 :(得分:-1)

在最后添加return 0;之后,它对我来说运作正常:

http://codepad.org/iVBNTEXn

执行printf("Hello, world!\n");后,调试程序会退出main的范围,因此您的列表不再存在。