Lập trình C - Kiểu Union
Union trong C
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.
Ư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ế.