Bài 23 Kiểu hợp và liệt kê

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 59 - 60)

/ *n ếu là dấu cách thì cắt nó kh

Bài 23 Kiểu hợp và liệt kê

Tóm tắt nội dung:

Biến kiểu hợp cũng bao gồm nhiều trường thông tin như một cấu trúc. Nhưng các trường trong biến kiểu hợp luôn lưu trên một vùng nhớ chung, trong khi của cấu trúc thì trên các vùng nhớ khác nhau. Kiểu liệt kê cho phép tạo một biến lấy giá trị trong một tập hằng số cho trước.

Thời lượng: 1 tiết

1. Kiểu hợp

Trong một cấu trúc các trường là độc lập với nhau trong bộ nhớ. Với mỗi trường dữ liệu sẽ có một vùng nhớ tương ứng với nó khi khai báo một biến cấu trúc. Tuy nhiên trong một số trường hợp trường dữ liệu là sự lựa chọn một trong những trường đó trong q trình sử dụng. Ví dụ với một vùng nhớ 2 byte ta có thể sử dụng nó như một số nguyên int hoặc hai char liên tiếp. Khi đó ta có thể định nghĩa một kiểu hợp giống như một cấu trúc nhưng với từ khố union như ví dụ sau.

Ví dụ:

/* khai báo union với trường là 1 int hoặc 2 char*/ union ic

{

int i;

char c[2]; };

/* khai báo một biến union */ union ic u;

/* sử dụng union, xác lập giá trị qua trường int */ u.i = 0x1122;

/* khi đó trường c cũng đã được xác lập giá trị

vì nó cùng một vùng nhớ của trường i */ printf("%x %x", u.c[0], u.c[1]); /* 22 11 */

Việc sử dụng union rất phổ dụng khi ta định nghĩa một cấu trúc nhớ mà có thể diễn giải theo nhiều cách khác nhau. Ví dụ như trên với 2 byte nhớ ta có thể diễn giải nó là một int hoặc hai char.

Một phần của tài liệu Bài giảng ngôn ngữ lập trình C (Trang 59 - 60)