union là một kiểu dữ liệu đặc biệt có sẵn trong C cho phép bạn lưu trữ các loại dữ liệu khác nhau trong cùng bộ nhớ. Bạn có thể xác định một union với nhiều phần tử, nhưng chỉ có một phần tử có thể chứa một giá trị tại bất kỳ thời điểm nào. union cung cấp một cách hiệu quả cho việc sử dụng bộ nhớ địa chỉ tương tự cho nhiều mục đích.
Khai Báo Union
Để khai báo một union, mọi khai báo trên union đều rất giống với việc bạn đã làm khi khai báo structure. Khai báo cho union một kiểu dữ liệu mới, với nhiều hơn một phần tử cho chương trình của bạn :
Các union tag là option để định nghĩa các phần tử rất giống với việc định nghĩa một biến bình thường, chẳng hạn như int i; hoặc float f; hoặc bất kỳ định nghĩa biến hợp lệ khác. Vào cuối của định nghĩa của union, trước các dấu chấm phẩy cuối cùng, bạn có thể khai báo một hoặc kết hợp nhiều biến. Dưới đây là cách bạn sẽ khai báo một loại union tên Data trong đó có ba phần tử i, f, và str:
Bây giờ, kiểu dữ liệu trên union có thể lưu trữ một số nguyên, một số thực, hoặc một chuỗi ký tự. cùng một vị trí bộ nhớ có thể được sử dụng để lưu trữ nhiều kiểu dữ liệu :
Các bộ nhớ bị chiếm đóng bởi một union sẽ đủ lớn để giữ các phần tử lớn nhất của union. Ví dụ, trong ví dụ trên kiểu dữ liệu sẽ chiếm 20 byte của không gian bộ nhớ bởi vì đây là không gian tối đa có thể được chiếm bởi chuỗi ký tự. Sau đây là những ví dụ mà sẽ hiển thị tổng dung lượng bộ nhớ bị chiếm đóng bởi các union ở trên:
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra kết quả sau đây:
Memory size occupied by data : 20
Truy Cập Phần Tử Union
Để truy cập vào bất kỳ phần tử nào của một union, chúng tôi sử dụng các toán tử truy cập thành viên (.). Các toán tử truy cập được mã hoá là một khoảng thời gian giữa các tên biến union và các thành viên công đoàn mà chúng tôi muốn truy cập. Bạn sẽ sử dụng union từ khóa để xác định các biến của loại hình union. Sau đây là các ví dụ để giải thích cách sử dụng union:
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả sau đây:
Ở đây, chúng ta có thể thấy rằng giá trị của phần tử union là i và f đã bị hỏng bởi vì giá trị cuối cùng được gán cho biến đã chiếm nhiều vị trí bộ nhớ và đây là lý do mà các giá trị phần tử str là nhận printf rất tốt. Bây giờ chúng ta hãy nhìn vào các ví dụ tương tự một lần nữa, nơi chúng tôi sẽ sử dụng một biến vào một thời điểm đó là mục đích chính của việc có công đoàn:
Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả sau đây:
Ở đây, tất cả các phần tử được in ra màn hình rất tốt bởi vì một phần tử đang được sử dụng tại một thời điểm.
0 nhận xét:
Đăng nhận xét