我是C新手,現在我正在學習鏈表的基礎知識。以下代碼只是遍歷鏈表的段。遍歷鏈表
#include <stdio.h>
#include <stdlib.h>
struct node
{
int item;
struct node *next;
};
int main()
{
struct node *start,*list;
int i;
start = (struct node *)malloc(sizeof(struct node));
list = start;
start->next = NULL;
for(i=0;i<10;i++)
{
list->item = i;
printf("%p\t%p\n",start->next,list->next);
list->next = (struct node *)malloc(sizeof(struct node));
list = list->next;
}
return 0;
}
我很困惑,「開始 - >下一步」的輸出不是NULL,而是一個固定的常量地址。但是我在for循環之前給NULL分配了start-> next,並且只更改了「list」(list-> item和list-> next)中的組件,而不是「start」中的組件。那麼爲什麼「開始」中的組件改變了?
應該是'的printf( 「%P \噸%P \ n」 個,(無效*)開始 - >下一個,(void *)list-> next);' – LPs
它在最初的迭代中* *爲NULL,或者您沒有注意到它? – WhozCraig