在 C 中初始化联合的动态数组
Initializing dynamic array of unions in C
我尝试创建联合数组,我的代码如下所示:
printf("Size of array:");
scanf_s(" %d", &n);
f* arr = malloc(n * sizeof(float));
我的工会是这样声明的:
union element
{
int digit;
char letter;
float number;
} f;
而且我真的不知道如何在 C 中声明联合数组。
我试过这样的事情:
f* arr = malloc(n * sizeof(float));
像这样:
float* arr = malloc(n * sizeof(float));
还有这个:
element* arr = malloc(n * sizeof(f));
它们中的任何一个都有效!
有人知道怎么做吗?
定义联合类型做
union element
{
int digit;
char letter;
float number;
};
要动态分配一个包含 n
个 union element
类型元素的数组,请执行以下操作:
union element * pu = malloc(n * sizeof (union element));
甚至更好
union element * pu = malloc(n * sizeof *pu);
您在此处显示的代码
union element
{
int digit;
char letter;
float number;
} f;
做两件事:
- 定义类型
union element
- 将变量
f
定义为 union element
类型
备注
如果这个
element* arr = malloc(n * ...
编译,那么你用的不是C编译器,而是C++编译器。
需要 C 编译器
union element* arr = malloc(n * ...
对您的措辞的最后评论:“正在初始化...数组...”:
动态代码创建 n 个并集元素。这些元素 而不是 得到 "initialized"。
在 malloc()
的 calloc()
instrad 分配期间初始化它们;
... = calloc(n, sizeof ...); /* Note the different number of parameters. */
我尝试创建联合数组,我的代码如下所示:
printf("Size of array:");
scanf_s(" %d", &n);
f* arr = malloc(n * sizeof(float));
我的工会是这样声明的:
union element
{
int digit;
char letter;
float number;
} f;
而且我真的不知道如何在 C 中声明联合数组。 我试过这样的事情:
f* arr = malloc(n * sizeof(float));
像这样:
float* arr = malloc(n * sizeof(float));
还有这个:
element* arr = malloc(n * sizeof(f));
它们中的任何一个都有效!
有人知道怎么做吗?
定义联合类型做
union element
{
int digit;
char letter;
float number;
};
要动态分配一个包含 n
个 union element
类型元素的数组,请执行以下操作:
union element * pu = malloc(n * sizeof (union element));
甚至更好
union element * pu = malloc(n * sizeof *pu);
您在此处显示的代码
union element
{
int digit;
char letter;
float number;
} f;
做两件事:
- 定义类型
union element
- 将变量
f
定义为union element
类型
备注
如果这个
element* arr = malloc(n * ...
编译,那么你用的不是C编译器,而是C++编译器。
需要 C 编译器
union element* arr = malloc(n * ...
对您的措辞的最后评论:“正在初始化...数组...”:
动态代码创建 n 个并集元素。这些元素 而不是 得到 "initialized"。
在 malloc()
的 calloc()
instrad 分配期间初始化它们;
... = calloc(n, sizeof ...); /* Note the different number of parameters. */