我有一个名为Node的结构。 Node接受double并将其存储到名为value
的变量中。
我正在尝试制作一个新结构。我的第一个例子有效,但第二个例子没有。第二个示例没有给出编译器错误,它构建得很好,但是当我稍后尝试从节点访问某个值时,它会给我-9.25596e+061
。
此代码可以正常工作:
Node *firstNode;
Node *newNode = new Node(value);
firstNode = newNode;
此代码不会:
Node *firstNode;
Node newNode(value);
firstNode = &newNode;
我可以使用前三行代码,但我想知道为什么其他代码不起作用。是根本错误还是语法略有偏差?
答案 0 :(得分:3)
局部变量是automatic - 当函数返回时它们超出范围,并且对它们的任何进一步访问(如你所做的那样通过指针)是未定义的行为。
new
在免费商店上分配内存,这与范围或生命周期无关。它只能在程序退出时由delete
或操作系统释放。