如何通过引用传递动态数组 C++

Gun*_*one 1 c++ pointers function dynamic dynamic-arrays

我无法理解如何在 C++ 中通过引用传递动态数组。

我在这个小的独立代码示例中重新创建了该问题:

#include <iostream>

using namespace std;

void defineArray(int*);

int main()
{
    int * myArray;
    defineArray(myArray);

    /** CAUSES SEG FAULT*/
    //cout<<(*(myArray)); //desired output is 0
    return 0;
}

void defineArray(int*myArray)
{
    int sizeOfArray;
    cout<<"How big do you want your array:";
    cin>>sizeOfArray;

    /** Dynamically allocate array with user-specified size*/
    myArray=new int [sizeOfArray];

    /** Define Values for our array*/
    for(int i = 0; i < sizeOfArray; i++)
    {
        (*(myArray+i))=i;
        cout<<(*(myArray+i));
    }
}
Run Code Online (Sandbox Code Playgroud)

son*_*yao 5

myArray本身是按值传递的,对myArray(例如myArray=new int [sizeOfArray];)的任何修改与原始变量无关,myArrayinmain()仍然是悬空的。

要使其通过引用传递,请更改

void defineArray(int*myArray)
Run Code Online (Sandbox Code Playgroud)

void defineArray(int*& myArray)
Run Code Online (Sandbox Code Playgroud)