我需要聲明由不同的變量類型的數組,主要是:創建具有不同類型的元件的陣列
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