2011-10-04 43 views
2

我需要声明由不同的变量类型的数组,主要是:创建具有不同类型的元件的阵列

char *A; uint32_t B; int C; 

正如我在教程理解,阵列中声明的类型和数量的元素。所以要说这样的话:

int a[3]; 

其中在这种情况下,三个元素的类型都是整数。 那么我想如何声明一个由上述三种不同类型组成的数组?

回答

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

And或'union'。 – Mat

+0

问题是:我需要把我的结构成员放入一个数组中,并对这个数组变量做些什么。所以每个定义都不可能? – heike

+2

并注意你可以有一个'struct'数组,即'struct whatever array [100]','array'有100个元素,所有类型都是'struct whatever'。 – pmg

1

您需要使用union

typedef struct { 
     int type; 
     union { 

     char *A; 
     uint32_t B; 
     int C; 
     }} item; 
相关问题