gpt4 book ai didi

c++ - 指向结构错误CDCDCD的C++结构指针

转载 作者:行者123 更新时间:2023-12-01 15:13:08 27 4
gpt4 key购买 nike

struct XYZ {
XYZ *adress;
};

XYZ *Ex;
int main() {
Ex = new XYZ[3];
Ex->adress = (++Ex);
cout << Ex->adress << endl;
Ex->adress = (++Ex);
cout << Ex->adress << endl;
Ex->adress = (--Ex)->adress;
cout << Ex->adress << endl;

输出:
0105E424        0105E4280105E424
struct XYZ {
XYZ *adress;
};

XYZ *Ex;

void copy_adress(XYZ *Ex) {
Ex->adress = (++Ex);
}

int main() {
Ex = new XYZ[3];
copy_adress(Ex);
cout << Ex->adress << endl;
Ex->adress = (++Ex);
cout << Ex->adress << endl;
Ex->adress = (--Ex)->adress;
cout << Ex->adress << endl;

输出:

CDCDCDCD
00A3E53C
CDCDCDCD

您能告诉我为什么会这样吗,以及我该如何解决?

最佳答案

当您将指针复制或传递给函数时,指针的行为就像常规对象一样。对副本所做的更改不会反射(reflect)在原件中。为了使函数中的更改可见,您需要引用以下内容:

void copy_adress(XYZ *&Ex) {
Ex->adress = (++Ex);
}

现在,这两个版本是等效的。

关于c++ - 指向结构错误CDCDCD的C++结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61603565/

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