返回null指针

时间:2014-11-12 20:38:25

标签: c++ pointers

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

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似乎也可能类似,但我仍然感到困惑。

1 个答案:

答案 0 :(得分:2)

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

void ClassName::getData(ClassName1* &data2)

为清楚起见,我将变量重命名为data1data2,以便您可以看到它们不同。只有在通过引用传递时它们实际上是相同的,否则存储在本地指针data2中的地址在getData函数退出后被销毁,并且最初存储在输入data1中的NULL地址仍然存在不变。

调用语法保持不变:

FileHandle.getData(data1);