0
我正在处理链表和指针。这是一个包含推送功能的简单代码。在推送我的元素并尝试打印第一个成员之后,执行的代码在运行时崩溃。但是,当将相同的指针传递给print_list函数并将其应用于print_list函数时,它可以正常工作。但是,当直接在主函数中使用它并应用printf函数时,它会崩溃。C编程错误,打印链表,在运行时执行代码崩溃
#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);
}
print_list(&ptr); // Here works fine
printf("%d\n", (*ptr)->order); //Here run time error
return 0;
}
void push(struct list **arg,int i){
struct list *temp;
temp= malloc(sizeof(list));
temp->order=i;
temp->next=*arg;
*arg=temp;
}
void print_list(list ** head) {
while ((*head) != NULL) {
printf("%d\n", (*head)->order); //Here works fine too !
*head = (*head)->next;
}
}
'list'是'**',但是你用'&'传递它,所以“receiver”实际上变成了'***' - 作为一个三星程序员不是一件好事;-) – John3136