c - 当我尝试在 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;
}
解决方案
我认为那里有一些问题。
从技术上讲,这不是错误,但
new
不建议将其用作标识符(用于变量或方法名称)。如果有人试图在 c++ 程序中使用它,它会崩溃。scanf("%d",d)
应该是scanf("%d",&d)
;它期望存储输入值的变量的地址。在语句中返回没有多大意义
if
,但如果你这样做了,你应该指定一个返回代码(你的最后一个返回行有 0 作为代码;你可以使用它,或者如果你想选择一个不同的数字)。
推荐阅读
- python - seed.py 文件不会在 PostgreSQL 数据库上运行,说映射已经生成?
- angular7 - 一项服务的多个实例
- sql - SQL Server:如何检查列中的值是否与子查询中的所有值匹配?
- c# - C#有没有办法编译一个exe
- c# - 如何将精灵完全移出屏幕?
- excel - VBA-Excel 文本到数字格式问题 - 用错误的值覆盖
- c++ - 容器在运行时调整大小的 Qt 错误
- excel - 是否有一个函数可以将 30 多个范围组合成一个(除了 union,因为我有太多范围)?
- python - 如何生成表格并由';'限制 txt 文件(或 csv),其中包含为 pandas 数据帧的每一列定义的字符数
- python - 动画不显示使用 matplotlib 传递的参数