使用union
,我們當然可以有一個包含不同數據類型元素的數組。非齊次數組的內存分配是如何工作的?
例如現在
struct elements {
int s;
union {
int ival;
float fval;
char *pval;
} element;
};
struct darray {
struct elements items[100];
};
,我們可以宣佈它可以包含不同的數據類型的元素的數組:
struct darray a;
是什麼困擾着我:只有工會的單個成員可以在單一時間存在,但我們已經有了一個包含100個元素的數組。這些元素沒有初始化,但是不應該在這裏分配內存?
內存分配如何在這樣的數組中工作?
你說:「我們當然可以有一個包含不同類型元素的數組」。這是不正確的;你只能有一個同類型的數組。你只顯示一個同類型的數組 - 類型是struct elements,它是一個包含三個不同類型的int和union的類型,但struct元素的大小始終相同。 –