我需要声明由不同的变量类型的数组,主要是:创建具有不同类型的元件的阵列
char *A; uint32_t B; int C;
正如我在教程理解,阵列中声明的类型和数量的元素。所以要说这样的话:
int a[3];
其中在这种情况下,三个元素的类型都是整数。 那么我想如何声明一个由上述三种不同类型组成的数组?
我需要声明由不同的变量类型的数组,主要是:创建具有不同类型的元件的阵列
char *A; uint32_t B; int C;
正如我在教程理解,阵列中声明的类型和数量的元素。所以要说这样的话:
int a[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
您需要使用union
即
typedef struct {
int type;
union {
char *A;
uint32_t B;
int C;
}} item;
And或'union'。 – Mat
问题是:我需要把我的结构成员放入一个数组中,并对这个数组变量做些什么。所以每个定义都不可能? – heike
并注意你可以有一个'struct'数组,即'struct whatever array [100]','array'有100个元素,所有类型都是'struct whatever'。 – pmg