2011-10-04 46 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; 
相關問題