2017-06-06 118 views
2

我重新審視鏈表數據結構,和我的課本創造這樣的功能:指針功能基於C

void *insert_beginning(){ 
    struct node *new_node; 
    new_node = (struct node*)malloc(sizeof(struct node)); 

    printf("\n Enter the data : "); 
    scanf("%d", &new_node->data); 

    new_node->next = link; 
    link = new_node; 
} 

是什麼void *insert_beginning意思? 此方法也給我一個警告No return, in function returning non-void

爲什麼如果我刪除*會出錯?

注:我的鏈表項目完美地運行這些功能,但我只是好奇。它與鏈表無關

+2

函數返回'void *',這是一個指向void類型的指針,但在最後的'}'前面沒有'return'語句 - 因此是警告。如果你不想返回任何東西,用'void'替換'void *'。 –

回答

4

聲明void *insert_beginning意味着該函數的名稱是insert_beginning,並且返回類型應該是void指針,在某種意義上說,它是一個無類型指針。但是,函數的執行沒有return語句,這會導致警告。

這是很難說沒有更多的背景,但無論哪種返回類型應該是void,而不是void *還是應該有像return new_node一些return語句,其將指針傳遞到新分配的內存給調用者。

+0

感謝您的幫助。是的,它的工作很好,只有void返回類型。我只需要清理我的項目LoL。說實話,我真的不明白無類型指針。但是現在這會做,我優先考慮c語言的數據結構 –