大连富士冰山怎么样:最近我在学c++,遇到这样的语句!

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 20:50:29
在它定义了 struct Node
{ int element;Node *pNodeNext;};后来出现这样的一句
if (Node *p=new Node) ——这语句怎么解释???书上写的注释行是//生成先结点。 ——请知道的朋友能够详细的解释一下!p.s.是不是书上印错了,应该是没有if和刮号的!!!

if (Node *p=new Node)中的Node *p=new Node作用是
创建Node对象,把对象赋值给p,
而Node *p=new Node用到了等号运算符,整个式子的值等于p
例如int i=j=k=1;整个式子的值等于i,即1.

所以if(Node *p=new Node)相当于:
Node *p=new Node;
if(p)

可能是错了,但是你应该把前后的代码都弄上来看看

可以这样用,但是最好不要(代码可读性不高),这句等价于下面的两句:
Node* p = new Node;
if(p != NULL)
{
}

书上注释没有错

if (Node *p=new Node)
这样的代码是很常见的, new 是一个分配内存的关键字,它和C里的malloc函数差不多,不同的是如果new的四类( class)那么它会导致构造函数的执行,用new 申请的内存空间,必须用delete释放,用 molloc 申请的必须用free 释放
简洁的代码编译效率高