在C++中,union是一種特殊的數據結構,允許在同一內存位置存儲不同的數據類型。它的用法如下:
節省內存:使用union可以節省內存,因為它只會為其中一個成員分配內存,而不是為每個成員都分配內存。
數據共享:union的成員共享同一塊內存,這意味著同一時間只能存儲一個成員的值。當一個成員被賦值后,它將覆蓋之前存儲的成員的值。
數據類型轉換:可以使用union進行數據類型轉換。例如,將一個float類型的值存儲在union中的一個成員,然后以int類型的方式讀取該值。
以下是一個示例,說明了如何使用union:
#include <iostream>
using namespace std;
union Data {
int i;
float f;
char str[20];
};
int main() {
Data data;
cout << "Memory size occupied by data : " << sizeof(data) << endl;
data.i = 10;
cout << "data.i : " << data.i << endl;
data.f = 220.5;
cout << "data.f : " << data.f << endl;
strcpy(data.str, "C++ Programming");
cout << "data.str : " << data.str << endl;
return 0;
}
輸出結果為:
Memory size occupied by data : 20
data.i : 10
data.f : 220.5
data.str : C++ Programming
在上面的示例中,我們定義了一個union Data,它有三個成員:i(整數類型)、f(浮點數類型)和str(字符數組類型)。我們可以看到,這三個成員共享同一塊內存,因此只能存儲其中一個成員的值。在main函數中,我們分別將整數、浮點數和字符串分配給union的成員,并打印它們的值。