我无法理解如何在 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));
}
}
最佳答案
myArray
是通过值本身传递的,对 myArray
的任何修改(例如 myArray=new int [sizeOfArray];
)与处理原始变量, main()
中的 myArray
仍然悬空。
要使其通过引用传递,请更改
void defineArray(int*myArray)
到
void defineArray(int*& myArray)
关于c++ - 如何通过引用 C++ 传递动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39929041/