我试图创建一个联合数组,我的代码看起来像这样:
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));
其中任何一个都有效!
任何人都知道怎么做?
答案 0 :(得分:2)
要定义联合类型,请执行
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个元素。那些元素不得到"初始化"。
在分配calloc()
malloc()
... = calloc(n, sizeof ...); /* Note the different number of parameters. */
期间初始化它们;
publicPath: '/'