这个结构
struct node{
int no;
node *next;
};
这两种声明之间有什么区别?
node *New=new node;
和
node *New;
答案 0 :(得分:2)
node *New=new node;
这是初始化指针,这是值得记住的好事。
尽管
node *New;
这不是一件坏事,因为有机会以它的裸体形式取消它。
答案 1 :(得分:2)
node *New=new node;
创建一个名为New
的变量,并使用指针对其进行初始化,由operator new
node *New;
取决于上下文,对于名称空间(全局)上下文创建一个变量,由nullptr
初始化,或者为本地创建一个未初始化的。
答案 2 :(得分:0)
您应该在声明变量时始终初始化变量,以便您知道它是一个很好的知道状态。使用指针时要抓住" new"指针创建时的内存或使用nullptr。
node * New = new node; // Okay. We know New holds a good node and we can call delete on it
node * New = nullptr; // Okay. We know we can delete on it without crashing
node * New; // Bad. We dont know what the state of New is and we can't call delete on it
答案 3 :(得分:-2)
两者都点头*新=新节点;和节点*新;是无效的声明类型。它允许行的原因是因为程序员已将关键字声明为声明的结构。它们都是糟糕的代码行。到目前为止你所拥有的是一个指向新结构的指针(但不是真的)。 New是一个关键字,它实例化一个优先级高于代码块当前范围的对象。每当最终创建一个对象时,必须使用delete关键字取消它。