如何从C 中的函数返回数组
How to return arrays from a function in C++?
我有两个功能,如下所示:
1。
void calcoeff (double gamma, double delx, double A, double B, int n)
{
int i;
double halfdelx, sp = 0;
double diag[n], upp[n-1], low[n-1], righ[n], X[n], sc[n];
halfdelx = delx / 2;
for (i = 1; i <= n; i++)
{
X[i] = i - 0.5;
sc[i] = 8 * X[i];
if (i == 1 || i == n)
{
diag[i] = ((gamma/delx) + (gamma/halfdelx) + sp);
}
else
diag[i] = ((gamma/delx) + (gamma/delx) + sp);
cout << "ndiag" << i << "=" << diag[i] << "n";
}
for (i = 1; i <= n-1; i++)
{
upp[i] = -1 * (gamma/delx);
low[i] = -1 * (gamma/delx);
cout << "nupp" << i << "=" << upp[i] << setw(15) << "low" << i << "=" << low[i] << "n";
}
for (i = 1; i <= n; i++)
{
if (i == 1){righ[i] = ((1/halfdelx) * A + sc[i]);}
else if (i == n)
{
righ[i] = ((1/halfdelx) * B + sc[i]);
}
else
righ[i] = sc[i];
cout << "nrigh" << i << "=" << righ[i] << "n";
}
return;
}
2。
void TDMA (double diag[], double upp[], double low[], double righ[], int n)
{
int i;
double fact, phi[n];
for (i = 2; i <= n; i++)
{
fact = low[i-1] / diag[i-1];
diag[i] = diag[i] - fact * upp[i-1];
righ[i] = righ[i] - fact * righ[i-1];
}
phi[n] = righ[n] / diag[n];
for (i = n-1; i >= 1; i--)
{
phi[i] = (righ[i] - (upp[i] * phi[i+1])) / diag[i];
}
cout << "nThe solution is as follows:n";
for (i = 1; i <= n; i++)
{
cout << "nphi" << i << " = " << phi[i] << endl;
}
return;
}
第一个功能计算并给出四个数组,必须将其作为输入参数发送到第二个函数才能获得最终的PHI数组。因此,在主要函数中,我声明了这两个函数所需的所有变量,我以相同的顺序将这两个函数称为这两个函数。我注意到的问题是,第一个功能是给出了四个具有正确值的数组,但是第二个功能没有给出正确的结果(根据代码)。我还注意到,第一个函数给出的数组不会作为输入参数进入第二个函数。第二个功能计算全部基于第一个功能给出的数组。谁能帮助我如何将第一个功能的输出发送到第二个功能?预先感谢。
不可能从c 中的函数中返回数组值(谈到数组类型;不要与 std::array
混淆)。
但是,可以返回类实例,并且类实例可以包含数组。有一个类模板将数组包装到标准库中的类中:std::array
。请注意,成员数组的大小必须是一个编译时间常数(就像所有数组变量一样),因此,如果数组需要具有运行时间大小,则此方法无效。
除了仅限于恒定尺寸外,复制周围的数据结构可能还很慢。一种常见的方法是让函数的呼叫者创建数据结构,并将输出迭代器传递到结构的元素 - 可能是元素的数量或第二个迭代器来表示范围。在数组的情况下,经常使用指针。该功能可以使用提供的迭代器来修改数据结构。一个例子:
const int n = 42;
void fill_arr(double*);
void use_arr(const double*);
int main() {
double arr[n]; // an array is created in main
fill_array(arr); // this function modifies the array
use_arr(arr); // the array can be passed to other functions
}
由于可能有很多参数,因此可能通过多个迭代范围传递到一个函数。
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量