Lập trình C nâng cao bài 18: Union trong lập trình C

106

Chào mừng các bạn đã đến với học viện công nghệ Vietpro

Đây là bài giảng trong giáo trình tự học lập trình C của Vietpro.

Ở bài học trước thì chúng ta đã cùng tìm hiểu về con trỏ và cấu trúc trong lập trình C.

Đây là bài học giúp các bạn có thể hiểu về union cũng như cách sử dụng chúng trong lập trình C. Chúng ta cùng tìm hiểu nhé.

[VIDEO TUT]

Bấm Subscribe Nhận video học mới nhất :

Chú ý: Các bạn lựa chọn video ở chế độ 720HD để xem được chất lượng hình ảnh và âm thanh tốt nhất nhé.

1. Union

Cũng giống như struct, union là một kiểu dữ liệu dùng để chứa các kiểu dữ liệu khác. Vậy union khác struct ở điểm nào ? Chúng ta quay trở lại bài toán quản lý sinh viên. Đầu tiên ta tạo khung chương trình bằng cách tạo project mới và lưu lại. Sau đó chúng ta khai báo kiểu cấu trúc union:

Ta có thể thấy cú pháp tương tự với struct. Nhưng chúng ta thử kiểm tra xem kích thước của cấu trúc struct và union ra sao ?

  • Với struct:

Kết quả:

  • Với union

Kết quả:

Vậy chúng ta có thể thấy kích thước của struct sẽ bằng tổng kích thước các biến ở trong nó. Còn union sẽ có kích thước bằng biến có kích thước lớn nhất.

2. Cách sử dụng

Vì bộ nhớ không được như struct nên khi chúng ta tương tác với một kiểu dữ liệu nào đó ở trong union thì nó chỉ tồn tại ở một thời điểm. Ta thử nhập dữ liệu cho sinh viên:

Kết quả:

Dữ liệu đã bị mất mát và sai lệch. Do bộ nhớ của union chỉ bằng biến có giá trị cao nhất nên khi tất cả dữ liệu đều muốn sử dụng thì union sẽ bị ghi đè lên nhau. Để khắc phục trường hợp này là khi chúng ta tương tác với thành phần nào thì chúng ta sử dụng nó luôn. Cụ thể:

Kết quả:

Chú ý: Cách khai báo, cú pháp của union đều giống struct nhưng kích thước của union và struct là khác nhau.

Bài học đến đây là kết thúc. Trong bài tiếp theo, các bạn sẽ được hướng dẫn về đọc và ghi file trong lập trình C (p1)

Chúc các bạn học tốt

Tác giả: Danh Sơn Vietpro

BÌNH LUẬN

Please enter your comment!
Please enter your name here