gpt4 book ai didi

c++ - 引用堆栈对象的地址

转载 作者:行者123 更新时间:2023-11-28 00:47:27 25 4
gpt4 key购买 nike

我很难理解为什么下面的代码不能在 Visual Studio 2012 下编译,下面的代码中已经嵌入了错误。我觉得它与引用堆栈对象有关,但不太确定。有人可以帮忙吗?

谢谢

#include <iostream>

typedef struct Node {
Node *next;
} Node;

void test(Node *&p) {
p=p->next;
}

void main() {
Node *p1=new Node();
test(p1); // this line compiles okay

Node p={0};
test(&p); // error C2664: 'test' : cannot convert parameter 1 from 'Node *' to 'Node *&'
}

最佳答案

&p 不是 Node* 类型的变量。它是 Node* 类型的常量。

即使您可以通过某种方式获取对 p 的引用并将其传递给 test()p=p->next; 也会仍然失败,因为您不能分配给常量。

关于c++ - 引用堆栈对象的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15757557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com