指针作为函数参数的引用

时间:2015-12-25 15:13:26

标签: c++ pointers

void SMatrix::setElement(int i, int j, double data)
{
            Node* temp = new Node(data, i, j, NULL, NULL);
            addNode(temp,(*this->rowsArr[i])); // this->rowsArr[i] is also Node*
}

void SMatrix::addNode(Node* temp, Node& list)
{

    if (&list == NULL)
        list = *temp;
}

所以我尝试将temp复制到list作为引用,但是这里的副本是(我认为)作为一个值,当函数结束时,没有任何变化,列表保持为NULL。 如何通过引用复制它并将温度保存在列表中?

1 个答案:

答案 0 :(得分:3)

检查if (&list == NULL)永远不会触发,因为对象的地址永远不是空指针。

你可能想做的是通过引用传递指针

void SMatrix::addNode(Node * temp, Node * & list)
{
    if (list == NULL) { list = temp; }
}

然后叫它:

    Node* temp = new Node(data, i, j, NULL, NULL);
    addNode(temp, this->rowsArr[i]);

如果没有添加节点,这当然会泄漏内存! (所以也许你应该将else { delete temp; }添加到addNode。)