我需要声明一个由不同变量类型组成的数组,主要是:
char *A; uint32_t B; int C;
正如我在教程中所理解的,在数组中,您声明了元素的类型和数量。所以说出类似的话:
int a[3];
在这种情况下,三个元素的类型都是整数。 那么我该如何声明一个由上面提到的三种不同类型组成的数组呢?
答案 0 :(得分:3)
C中数组的定义是SAME类型元素的集合。您正在寻找的可能是struct
。
struct s
{
char* A;
uint32_t B;
int C;
};
int main(void)
{
struct s test;
test.A = "Hello";
test.B = 12345;
test.C = -2;
// Do stuff with 'test'
return 0;
}
或者,如下面的评论所述,您可以使用union
代替。但是你不能像我在上面的例子中那样同时使用A,B和C - 只存储其中一个 - 在我的例子中它将是C。
如果需要,您可以制作一组结构。
struct s test[5]; // Array of structures
答案 1 :(得分:1)
您需要使用union
即
typedef struct {
int type;
union {
char *A;
uint32_t B;
int C;
}} item;