将数组值从函数传递回结构
Passing array values from a function back into a struct
我目前正在开发一个程序,该程序需要一个函数来计算数组值,然后将这些值存储在arr1[]
中,其大小未知,并在函数内计算。 然后,它将整个数组以及数组的大小传回主函数。 使用结构,我返回了大小,但由于某种原因我无法返回数组。 有人可以指导我做错了正确的方向吗?
这是我的结构:
struct Arr
{
int size_1;
int arr_1[];
};
这是我返回数组的函数的一部分,其中arr1[]
是我需要返回的数组:
Arr smallElement(int arr[], int size)
{
Arr tempArr;
for (int count = 0; count < newSize; count++)
{
tempArr.arr_1[count] = arr1[count];
}
return tempArr;
}
这是我在 main 函数中使用的函数来调用函数来打印数组,但它每次只打印 3 个随机数:
Arr a;
a = smallElement(array, n);
cout << "The array is: ";
for (int count = 0; count < a.size_1; count++)
{
cout << a.arr_1[count] << " ";
}
在struct
内,int arr_1[]
没有定义一个实际的数组。它实际上只是一个称为灵活数组成员的占位符。在 C 语言中,这是通过为struct
的完全定义部分分配内存以及为数组分配额外空间来使用的 — 在使用malloc
或其他内存分配时,您必须手动添加空间。在标准C++中,不应使用它。(它不是标准C++的一部分。它是一些来自 C 的编译器采用的扩展,它是标准的。
当你声明tempArr
时,它只创建了struct
的完全定义的部分。当您将值分配给tempArr.arr_1[count]
时,那里没有分配的数组,因此行为是未定义的。返回tempArr
时,将返回结构的副本,但同样,仅返回已定义部分的副本。
如果调用方知道数组的大小,您可能希望他们将其传递给函数,也许是通过new
分配数组或使用std::vector
并通过引用传递向量。如果调用方不知道大小,则可能需要让函数分配数组并返回指向它的指针(在这种情况下,调用方负责稍后删除它),或者您可能希望将空(或以其他方式可供重用)std::vector
传递给函数,最好是通过引用。在函数内部,它可以向向量添加更多元素,std::vector
将为您管理内存分配。
- 使用不带参数的函数访问结构元素
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 链表,反向函数,数据结构
- 结构向量中自定义结构函数的内存使用
- C++ 中的嵌套结构函数
- 在结构函数之间传递文件路径 C++ 编辑:修复LNK2019错误
- 如何将值从外部传递到结构函数
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- C++结构函数的多个定义
- C++ 另一个标头中的结构函数给出"missing type specifier"
- 如何在C中找到结构/函数的父头文件
- C++二进制文件到结构函数
- C++ 将结构函数作为继承结构中函数的参数传递
- 如何在 main 之外的类中使用结构函数
- 在类中使用结构函数,在基类 c++ 中使用变量
- C++ 结构函数体调用另一个结构函数,同一个模块
- 是存储在对象中的类/结构函数
- Eclipse CDT 在从 std::map 访问时无法解析结构函数
- C++模板自身名称作为模板模板参数在同一模板结构函数内传递
- 如何使用真正的字符串类型来表示类结构函数中的字符串