创建包含不同类型元素的数组

时间:2011-10-04 10:11:32

标签: c

我需要声明一个由不同变量类型组成的数组,主要是:

char *A; uint32_t B; int C;

正如我在教程中所理解的,在数组中,您声明了元素的类型和数量。所以说出类似的话:

int a[3];

在这种情况下,三个元素的类型都是整数。 那么我该如何声明一个由上面提到的三种不同类型组成的数组呢?

2 个答案:

答案 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;