从外部 function/class 设置动态数组的新大小?
Set new size of dynamic array from an external function/class?
我的主要代码声明了一个需要从外部函数调整大小的指针。例如:
double *vect =NULL;
classobj object;
object.func(vect);
//--- print the outcome
for(int j=0; j<4; ++j)
cout << vect[j] << " .. " << endl;
其中函数 func() 是在另一个文件中定义的 classobj
的一部分(例如 classobj.h
和 .cpp
),如
void classobj::func(double *_vect){
_vect = new double[4];
for(int j=0; j<4; ++j)
_vect[j] = 3.0*j +1 ;
};
问题是 vect
没有调整大小。我得到分段错误。关于在这种情况下如何使用指针有什么想法吗?
您正在传递对数组的引用,然后创建一个新数组并将其分配给函数中的指针。您需要传递指针的指针,然后重新分配该指针的地址:
void classobj::func(double **_vect){
(*_vect) = new double[4];
尽管此解决方案可行,但我建议为此目的使用 std::vector
并通过引用该函数来传递它
我的主要代码声明了一个需要从外部函数调整大小的指针。例如:
double *vect =NULL;
classobj object;
object.func(vect);
//--- print the outcome
for(int j=0; j<4; ++j)
cout << vect[j] << " .. " << endl;
其中函数 func() 是在另一个文件中定义的 classobj
的一部分(例如 classobj.h
和 .cpp
),如
void classobj::func(double *_vect){
_vect = new double[4];
for(int j=0; j<4; ++j)
_vect[j] = 3.0*j +1 ;
};
问题是 vect
没有调整大小。我得到分段错误。关于在这种情况下如何使用指针有什么想法吗?
您正在传递对数组的引用,然后创建一个新数组并将其分配给函数中的指针。您需要传递指针的指针,然后重新分配该指针的地址:
void classobj::func(double **_vect){
(*_vect) = new double[4];
尽管此解决方案可行,但我建议为此目的使用 std::vector
并通过引用该函数来传递它