gpt4 book ai didi

c++ - 在 C++ 中传递/检索指针

转载 作者:行者123 更新时间:2023-11-30 01:07:08 25 4
gpt4 key购买 nike

在 C++ 中通过指针传递或检索对象时,众所周知对象本身不会被复制,但是指针呢,接收函数是否处理对象的相同指针或该指针的拷贝,并且因此,当不再需要时,每个指针都应分配给 null。

最佳答案

在 C++ 中传递指针时(即 foo(some_object* p)),您实际上传递的是指针的值,即对象所在的位置。该值本身是一个拷贝,这意味着如果您在函数内部执行 p = NULL;,不会更改原始指针,但它指向的地址包含相同的原始对象。

示例:

#include <iostream>
using namespace std;

class obj{
public:
int a;
};

void foo(obj* pp){
pp->a = 2;
pp = NULL;
cout << pp << endl;
}
int main() {
obj* p = new obj();
p->a = 1;
cout << p << '\t' << p->a << endl;
foo(p);
cout << p << '\t' << p->a;
return 0;
}

您会注意到 pfoo 执行后保持不变,尽管它在内部发生了变化,因为变化的是 p< 的拷贝a 实际上在 foo

期间发生了变化

关于c++ - 在 C++ 中传递/检索指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45016618/

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