gpt4 book ai didi

c++ - 返回空指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:42:06 24 4
gpt4 key购买 nike

我有一个这样定义的测试:

ClassName FileHandle;
ClassName1* data; //I want function to define this later

FileHandle.getData(data); //this is null after the call but isn't in function it calls
//why isn't the pointer defined from the method called? How fix?

它调用的函数如下所示:

void ClassName::getData(ClassName1* data)
{
char * buf = "lots of data";
data = new ClassName1(buf, sizeof(buf)); //it's in there
}

我确定这是我对指针和引用的理解有问题。知道我在这里做错了什么吗?为什么返回到我的测试时数据的值仍未定义?

我看到了指针和函数调用的例子here但我找不到这样的例子。 This看起来也可能很相似,但我仍然很困惑。

最佳答案

通过引用传递指针本身 &:

void ClassName::getData(ClassName1* &data2)

为清楚起见,我将变量重命名为 data1data2,这样您就可以看出它们是不同的。只有在按引用传递时,它们才有效地相同,否则在 getData 函数退出后,本地指针 data2 中存储的地址将被销毁,并且输入中最初存储的 NULL 地址data1 保持不变。

调用语法保持不变:

FileHandle.getData(data1);

关于c++ - 返回空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896105/

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