2015-10-23 71 views
-1

我無法理解爲什麼我一直在收到段錯誤。段錯誤(核心轉儲)代碼塊

我使用codeblocks,它編譯成功,但代碼不執行。在執行時,我不斷收到這個錯誤。

這是我的代碼:

#include <stdio.h> 
#include <stdlib.h> 

struct node 
{ 
    int data; 
    struct node *next; 
}; 

struct node *nc(int data) 
{ 
    struct node *temp = (struct node *)(malloc(sizeof(struct node))); 

    temp->data = data; 
    temp->next = NULL; 
    return temp; 
} 

int main() 
{ 
    struct node *head; 

    head->data = 5; 
    struct node *a = nc(19); 
    struct node *b = nc(25); 
    struct node *c = nc(12); 

    head->next = a; 
    a->next = b; 
    b->next = c; 
    while (head != NULL) 
    { 
     printf("%d \n", head->data); 
     head = head->next; 
    } 
} 
+1

聽起來就像你需要學習使用調試器。僅僅因爲代碼編譯並不意味着它是正確的。離得很遠。你在某處做了一個無效的內存引用。如果你想學習成爲一名優秀的程序員,你需要學習如何找到這樣的錯誤。那麼你有什麼嘗試? – lurker

+0

提示:當head-> data = 5時,'head'的值是多少?'? – lurker

+0

感謝您的快速回復!我得到了我的錯誤 –

回答

0
struct node *head; 

「頭」 在這一點上NULL。 您必須像「temp」一樣分配內存。

struct node *head = (struct node *)(malloc(sizeof(struct node))); 
+0

感謝您的回覆,我有我的錯誤 –