gpt4 book ai didi

c++ - 如何根据输入中定义的 "external"int 在结构中定义数组大小

转载 作者:行者123 更新时间:2023-11-28 04:15:07 26 4
gpt4 key购买 nike

我有一个结构,里面有一个数组。这个数组的大小需要是 3*input_variable。我如何在外部定义一个数字,它乘以输入值,我可以在结构中使用它来声明数组的长度?

我已经尝试将变量 h 在 main 之外定义为

extern h

然后根据输入变量在 main 中为其赋值。

我也试过用(总结一下)

nt main(int argc, char** argv)
{
int input_variable;
std::cin << input_variable;

int h = input_variable * 3;

void some_function(); // function does some stuff
// with the structs

#ifndef ARRAY_SIZING
#define ARRAY_SIZING h
#endif

return 0;
}

struct _struct_
{
constexpr std::size_t b = ARRAY_SIZING;
double* arr[b];
};

int some_function()
{
// structs are used down here.

return 0;
}

我希望能够使用输入参数在结构中分配数组的大小。谢谢。

最佳答案

嗯。 C++ 中的纯 C 数组。大多从来不需要。好的,你想要连接到一个库函数。

我的猜测是该库不需要数组,而是指针。并且由于您的结构包含一个指向 double 指针的数组,因此我假设该库希望看到一个 double **。

我很难想象旧库会使用引用或指向数组的指针,例如:

void function (double* (&array)[10]); // Reference to array
void function (double* (*array)[10]); // Pointer to array

因为在这里您还需要一个在编译时已知大小的数组。

我宁愿期待类似的东西

void function (double** array, size_t size); // Pointer to Pointer to double

所以,像这样使用 std::vector:

std::vector<double *> arr(input_variable * 3);

如果您想将数组数据交给 lib 函数,请使用 vector data 函数。

function (arr.data());

您也可以使用 new 创建数组。

最后提示:不要使用原始指针。

希望能帮上一点忙。 . .

关于c++ - 如何根据输入中定义的 "external"int 在结构中定义数组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56843917/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com