Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将指针变量作为引用参数传递?_C++_Pointers_Pass By Reference - Fatal编程技术网

C++ 如何将指针变量作为引用参数传递?

C++ 如何将指针变量作为引用参数传递?,c++,pointers,pass-by-reference,C++,Pointers,Pass By Reference,当你有这样一个函数时,形式参数是一个引用,它变成了实际参数的另一个名称,因此当我们修改函数内部的形式参数时,函数外部的原始变量也会改变 void add_five(int& a) { a += 5; } int main() { int number = 3; add_five(number); std::cout << number << std::endl; // prints 8 return 0; } 我认为

当你有这样一个函数时,形式参数是一个引用,它变成了实际参数的另一个名称,因此当我们修改函数内部的形式参数时,函数外部的原始变量也会改变

void add_five(int& a)
{
    a += 5;
}

int main()
{
    int number = 3;
    add_five(number);
    std::cout << number << std::endl;  // prints 8

    return 0;
}
我认为
leader
trail
指针变量中的右值内存addrese将被分配到
节点*
左值
ptr1
ptr2

Node* ptr1 = leader;
Node* ptr2 = trailer;
问题在于
ptr1
ptr2
是函数内部的独立局部变量。最初,它们指向与实际参数指针相同的位置。但是,我的函数会移动一些节点,并且在函数结束时,
ptr1
ptr2
的值会发生更改。我希望这些更改也在原始变量
leader
trailer
中,就像引用一样。因此,即使当
ptr1
ptr2
到期时,
leader
trailer
也应该各就各位

我该怎么做?可能键入将指针强制转换为
int&
?或者使用指针对指针?我想通过引用传递指针,但我不知道如何传递

我想通过引用传递指针,但我不知道如何传递

对此,请考虑下面的代码段

#include <iostream>

void test(int*& t)
{
    t = nullptr;
}

int main()
{
    int* i = new int(4);

    test(i);

    if (i == nullptr)
        std::cout << "I was passed by reference" << std::endl;
}

听起来您只需要重新设计函数
移动五个节点
。然而,这有点难说。指向指针的指针可能工作得很好。我不明白使用这些的问题是什么。还有一个问题:
int*I=newint[4]
创建一个包含4个
int
的新动态数组,并将指针指定给
i
,而
int*i=new int(4)
创建一个用
4
初始化的动态整数,并将指针指定给
i
。我说得对吗?我理解得对吗?是的,你说得对。这只是一个得到指针的例子。还有一个很好的双关语
我是通过引用传递的
@Galaxy不是有意的,但我同意;)
#include <iostream>

void test(int*& t)
{
    t = nullptr;
}

int main()
{
    int* i = new int(4);

    test(i);

    if (i == nullptr)
        std::cout << "I was passed by reference" << std::endl;
}
void LinkedList::move_five_nodes(Node*& ptr1, Node*& ptr2) { ... }