c++ - 指针作为函数参数的引用

标签 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 复制到列表作为引用,但这里的拷贝(我认为)是作为一个值,当函数结束时,没有任何变化并且列表保持为 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]);

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

关于c++ - 指针作为函数参数的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34463968/

相关文章:

pointers - 使用非指针值调用指针接收器方法

c++ - 将方法作为函数指针传递

c++ - 比较 2 个字符串映射的通用 C++ 规则引擎

c++程序将数字转换为不起作用的单词

c++ - Asio 点对点网络编程

c++ - 使用字符指针和字符数组的区别

c++ - 间接需要指针操作数

c++ - 通过 Derived::f2() 调用 f1() 时调用了谁的函数?

c++ - 在这种情况下是否需要检查

c - 段错误、指针问题