2017-06-06 96 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语言的数据结构 –