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