将指针作为函数参数的引用

reference of pointer as a function argument

本文关键字:参数 引用 函数 指针      更新时间:2023-10-16
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 复制到列表作为参考,但这里的复制(我认为(是一个值,并且函数结束时,没有任何变化,列表保持 NULL。如何通过引用复制它并将临时温度保存在列表中?

检查

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]);

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