错误,使用C编程的链表

错误,使用C编程的链表,c,linked-list,push,singly-linked-list,C,Linked List,Push,Singly Linked List,我正在尝试编写简单的推送函数,在运行时之前一切正常,执行的代码崩溃。任何人都可以澄清原因,好吗 #include<stdio.h> #include<stdlib.h> typedef struct list{ int order; struct list *next; }list; void push(struct list **arg,int i); int main() { struct list **ptr=NULL; for(int i=0;i&

我正在尝试编写简单的推送函数,在运行时之前一切正常,执行的代码崩溃。任何人都可以澄清原因,好吗

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

typedef struct list{
int order;
struct list *next;

}list;

void push(struct list **arg,int i);

int main()
   {
struct list **ptr=NULL;

for(int i=0;i<10;++i){
    push(ptr,i);
  }

return 0;
     }

void push(struct list **arg,int i){

 struct list *temp;
 temp= malloc(sizeof(list));

temp->order=i;

temp->next=*arg;

*arg=temp;

}
#包括
#包括
类型定义结构列表{
整数阶;
结构列表*下一步;
}名单;
无效推送(结构列表**arg,int i);
int main()
{
结构列表**ptr=NULL;
对于(int i=0;iorder=i;
临时->下一步=*参数;
*arg=温度;
}
写入

list *ptr=NULL;
     ^^^           
for(int i=0;i<10;++i){
    push( &ptr,i);
         ^^^^
  }
那么这个解引用

*ptr

结果导致未定义的行为。

struct list**ptr=NULL;
需要
struct list*ptr=NULL
push(ptr,i);
然后变成
push(&ptr,i);
但是当我将它传递给另一个函数(如打印函数)时,它工作正常,您能澄清原因吗先生?无效打印列表(列表**头){while!=NULL){printf(“%d\n”,(*head)->order);//工作正常!*head=(*head)->next;}}@YasserMohamed我不知道现在如何添加新元素以及如何调用函数。您可以问一个新问题。
*ptr