所以假设有一个函数int* coeff(int n)
返回数组(或者更确切地说,地址到数组[0])。现在,在这个函数中,这个数组的长度比如说5,但是当我把它称为:int* array=SomeObject->coeff(n);
那个大小丢失了,我不知道怎么能再把它取回来。有什么帮助吗?
答案 0 :(得分:1)
如果您实际返回本地声明的问题,那么问题就是“失去其大小”。
首先,你必须记住数组衰减到指针,一旦它完成,你就不再有关于数组的任何信息,只有指针。并且指针的大小是指针的大小而不是它指向的大小。
更大的问题可能是你返回一个本地声明的数组。当一个函数返回在其中声明的所有变量超出范围时。那么返回的指针指向什么呢?
答案 1 :(得分:1)
我认为你的代码看起来像这样:
int* coeff(int n)
{
int* a = new int[5];
// ...
return a;
}
我建议使用矢量而不是数组:
#include <vector>
std::vector<int> coeff(int n)
{
std::vector<int> a(5);
// ...
return a;
}
您始终可以通过调用.size()
成员函数来获取向量的大小:
int main()
{
std::vector<int> x = coeff(42);
std::cout << x.size() << " elements in the vector!\n";
}