0
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()列表会丢失所有值。为什么?

4

2 回答 2

1

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

(作为旁注,不要使用void main()但使用int main()并在最后返回 0。)

于 2013-07-27T16:24:51.480 回答
-1

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

http://codepad.org/iVBNTEXn

Afterprintf("Hello, world!\n");执行,调试器退出范围main,因此您的列表根本不再存在。

于 2013-07-27T16:27:26.313 回答