gpt4 book ai didi

c 在结构中定义不同大小的数组

转载 作者:太空狗 更新时间:2023-10-29 15:58:36 25 4
gpt4 key购买 nike

我需要为两种类型的对象定义一个结构。两者具有完全相同的数据结构并执行相同的任务(成员方法)。

唯一的区别是两种类型的数组大小不同,一种使用 SIZE_A,另一种使用 SIZE_B。

不需要重复结构和函数的定义。

我如何使用一种类型的“结构”,并用不同的大小初始化它的数组?

#define SIZE_A 100
#define SIZE_B 200

typedef struct{
int matr[SIZE_A][SIZE_A]; // for another type matr[SIZE_B]
int arr[SIZE_A]; // for another type arr[SIZE_B]
int size; // will be initialized to SIZE_A or SIZE_B
int var1, var2;
}s;

void task1(s* si){
...
}

void task2(s* si){
...

最佳答案

即使使用 union ,结构也将与两个数组中最大的一个一样大。

执行以下操作之一:

  1. 忽略最大数组大小的开销。 (使用一个数组或 union )
  2. 为每种类型创建一个单独的结构。
  3. 使用malloc动态分配数组。

关于c 在结构中定义不同大小的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17956697/

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