gpt4 book ai didi

声明后更改结构的大小

转载 作者:行者123 更新时间:2023-11-30 21:02:18 25 4
gpt4 key购买 nike

我有一个包含此结构的代码

struct mystruct{
int a;
int array[1];
};

运行代码后直接我的意思是我不会声明该结构的任何变量,用户将输入一个数字,例如 6。我想知道如何改变该结构的大小。

就像我在此表格上声明的那样

struct mystruct{
int a;
int array[6];
};

然后我正常使用,像这样:

struct mystruct var;
//I do not want to add any code here, to appropriate new form
for(int i=0;i<6;i++)
var.array[i]=0;

最佳答案

在直接 C(而不是 C++)中执行此类操作的典型方法是在结构中仅包含一个指针成员来指向数组,然后使用结构中的另一个成员来指示大小。这通常要求结构体的用户根据需要对数组进行 m​​alloc(),并设置大小成员以匹配。像这样的东西:

struct mystruct
{
int size;
int *array;
};

和:

struct mystruct var;
var.array = malloc(6 * sizeof(int));
var.size = 6;

for (int i = 0; i < var.size; i++)
var.array[i] = 0;

另一个常见的范例是 linked list .

当然,在 C++ 中你可以只使用 std::vector<int>

关于声明后更改结构的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31127639/

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