首页 > 解决方案 > 当我尝试在 int d 中输入一些值时,为什么链表会出错?

问题描述

我是编码新手,我想知道为什么当我输入一些值时这段代码会崩溃。这有一些教程,但我不明白。

有人可以解释linked lists得很简单吗?

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

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

int main()
{
    tnode *head=NULL;
    tnode *new=(tnode*)malloc(sizeof(tnode));
    int d;
    scanf("%d", d);
    new->data=d;
    new->next=NULL;
    if(head==NULL)
    {
        head=new;
        return;
    }

    return 0;
}

标签: cpointerslinked-list

解决方案


我认为那里有一些问题。

  1. 从技术上讲,这不是错误,但new不建议将其用作标识符(用于变量或方法名称)。如果有人试图在 c++ 程序中使用它,它会崩溃。

  2. scanf("%d",d)应该是scanf("%d",&d);它期望存储输入值的变量的地址。

  3. 在语句中返回没有多大意义if,但如果你这样做了,你应该指定一个返回代码(你的最后一个返回行有 0 作为代码;你可以使用它,或者如果你想选择一个不同的数字)。


推荐阅读