为什么这个代码不能工作?c++

Why this code is not working? C++

本文关键字:工作 c++ 不能 代码 为什么      更新时间:2023-10-16

我正在学习CPP,需要一些帮助。我的代码不工作,它停在add->value = value .

typedef struct node node;
struct node{
    int value;
    struct node *next;  
};
node *top; 
int insert(int value){
    struct node *add;
    cout<< "here it stops";
    add->value = value;
    add->next = NULL;
    if(top == NULL ){
        top == add;
    }else{
        add->next = top;
        top =  add;
    }  
}

当你这样做的时候:

struct node *add;

你定义了一个指向node的指针(这里可以省略struct)。但是这个指针没有指向任何有效的node对象。在您可以这样做之前,您必须使它指向node:

add->value = value;

在执行add->value = value之前,需要为struct node *add分配空间(类似于add = new node())。

您忘记分配add指针所指向的内存

你的函数也不返回任何东西,虽然它有返回类型int。

函数可以如下所示

void insert( int value )
{
    node *add = new node;
    add->value = value;
    add->next = top;
    top =  add;
}  

或者如果编译器支持列表初始化,那么

void insert( int value )
{
    node *add = new node { value, top };
    top =  add;
}  

或者一行:)

inline void insert( int value ) { top = new node { value, top }; }