C++ 如何处理指针来定义函数?以及定义返回数组的函数的问题

C++ 如何处理指针来定义函数?以及定义返回数组的函数的问题,c++,function,pointers,root,C++,Function,Pointers,Root,假设我需要一个生成数组r[3]={x,y,z}的函数,其中x[1000],y[1000],z[1000]每一个都是一个数组,有1000个双浮点数。 我做了一个函数,它返回r表单的位置,在这里我们需要通过解包内存位置来访问x,y,z。我的代码如下: 双圆柱(双半径、双高度) { 双x[1000],y[1000],z[1000]; 双θ=0,dtheta=M_π/500,dz=高度/1000; z[0]=0; y[0]=0; x[0]=半径; 对于(int i=1;i,以解决您的问题,返回 STD:

假设我需要一个生成数组r[3]={x,y,z}的函数,其中x[1000],y[1000],z[1000]每一个都是一个数组,有1000个双浮点数。 我做了一个函数,它返回r表单的位置,在这里我们需要通过解包内存位置来访问x,y,z。我的代码如下:

双圆柱(双半径、双高度)
{
双x[1000],y[1000],z[1000];
双θ=0,dtheta=M_π/500,dz=高度/1000;
z[0]=0;
y[0]=0;
x[0]=半径;
对于(int i=1;i<1000;i++)
{
z[i]=z[i-1]+dz;
θ=θ+dtheta;
x[i]=半径*cos(θ);
y[i]=半径*sin(θ);
}
双*r[3]={x,y,z};
返回**r;
}
现在如果我使用

data = cylinder(5, 10);
cout<<data<<endl;
data=气缸(5,10);

cout这可以通过使用标准库
std::vector
std::tuple
轻松解决,后者就像一个非常轻量级的固定长度数组:

#包括
#包括
标准::矢量圆柱体(双半径、双高度)
{
std::向量结果;
双θ=0;
双dtheta=M_PI/500;
双dz=高度/1000;
//这里不需要数组或反向引用
双x=半径;
双y=0;
双z=0;
//添加第0个条目
结果。向后推_({x,y,z});
对于(int i=1;i<1000;i++)
{
z+=dz;
θ=θ+dtheta;
x=半径*cos(θ);
y=半径*sin(θ);
//添加后续条目
结果。向后推_({x,y,z});
}
返回结果;
}
现在,通过使用容器解决了内存管理问题


如果
x
y
z
在语义上很重要,那么您甚至可能希望使用这些属性创建一个小型
结构
,为其提供更多的上下文。

“它应该返回一个位置”-为什么要这样做<代码>返回**r
是“r的值的值”,它是r的第一个元素的第一个元素。实际上,在这里返回指针是错误的,因为它指向的数组在函数结束后将不存在。有关解决此问题的方法,请参阅副本。这是否回答了您的问题?返回超出范围的局部变量的地址。未定义的行为。因为这是C++使用的代码> STD::vector < /Cuff>,以解决您的问题,返回<代码> STD::vector < /C>。没有办法从C++中返回一个数组。数组非常差,请改用向量。