Cũng giống như structure, union trong C là kiểu dữ liệu do người dùng định nghĩa được sử dụng để chứa các loại phần tử khác nhau.
Nhưng nó không chiếm tổng bộ nhớ của các thành viên cộng lại, mà nó chỉ chiếm bộ nhớ của thành viên có lớn nhất.
Nội dung chính
Ưu điểm của Union so với Structure
Nó chiếm bộ nhớ ít hơn vì nó chiếm bộ nhớ của thành viên lớn nhất mà thôi.
Nhược điểm của Union so với Structure
Nó chỉ có thể lưu trữ dữ liệu trong một thành viên.
Định nghĩa Union trong C
Từ khóa union được sử dụng để định nghĩa một union.
union union_name { data_type member1; data_type member2; ... data_type memeberN; };
Ví dụ:
union employee { int id; char name[50]; float salary; };
Ví dụ Union trong C
#include <stdio.h> #include <string.h> /** * dinh nghia union Employee */ union Employee { int id; char name[50]; } e1; // khai bao bien e1 cho Employee /** * ham main */ int main() { // luu tru thong tin employee e1 e1.id = 101; strcpy(e1.name, "Vinh Tran"); // chuyen doi chuoi thanh mang char // hien thi thong tin e1 ra man hinh printf("employee e1 id: %d\n", e1.id); printf("employee e1 name: %s\n", e1.name); return 0; }
Kết quả:
employee e1 id: 1752066390 employee e1 name: Vinh Tran
Như bạn thấy, id lấy giá trị rác vì tên có kích thước bộ nhớ lớn. Vì vậy, chỉ tên sẽ có giá trị thực tế.