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()
列表会丢失所有值。为什么?
答案 0 :(得分:1)
变量lst
及其节点超出范围,因为printf
语句是块中的最后一个语句。
(作为旁注,请勿使用void main()
但请使用int main()
并在结尾处返回0。)
答案 1 :(得分:-1)
在最后添加return 0;
之后,它对我来说运作正常:
执行printf("Hello, world!\n");
后,调试程序会退出main
的范围,因此您的列表不再存在。