5.3.1 ðịnh nghĩa kiểu bằng typedef
Sử dụng từ khố typedef, chúng ta có thể định nghĩa các kiểu dữ liệu mới dựa trên các kiểu dữ liệu đã có. Mẫu chung cho việc ñịnh nghĩa kiểu dữ liệu bằng typedef như nhau:
typedef <kiểu> <danh sách tên>;
Ví dụ, như chúng ta đã biết trong C khơng định nghĩa kiểu dữ liệu logic, mà kiểu dữ liệu này ñược biểu diễn thông qua bất cứ kiểu dữ liệu nào. Trong ví dụ này, chúng ta sẽ sử dụng kiểu số nguyên ñể biểu diễn kiểu logic, ñịnh nghĩa như sau:
typedef int BOOL, BIT;
Sau ñịnh nghĩa này, chúng ta đã có các kiểu dữ liệu mới là BOOL, BIT, mà thực chất là kiểu int. Kiểu BOOL, BIT có thể dùng để khai báo các biến như sau:
BOOL tiep_tuc; BIT ket_qua;
ðoạn lệnh trên khai báo các biến tiep_tuc kiểu BOOL và ket_qua kiểu BIT. Về mặt bản chất, các biến này có kiểu nguyên, tuy nhiên ta đã coi các biến này có kiểu logic nên các biến này chỉ nên nhận hai giá trị là 0 (biểu diễn giá trị sai) và 1 (biểu diễn giá trị ñúng).
5.3.2 Sử dụng typedef ñể ñịnh nghĩa kiểu cấu trúc
Chúng ta có thể dùng từ khố typedef để ñịnh nghĩa kiểu cấu trúc, cho phép viết ngắn gọn hơn.
http://www.ebook.edu.vn 86
Giả sử chúng ta ñã ñịnh nghĩa kiểu struct Ngay, chúng ta có thể định nghĩa kiểu dữ liệu mới tương ñương kiểu dữ liệu này như sau:
typdef struct Ngay KieuNgay;
Sau khi định nghĩa kiểu KieuNgay, có thể dùng kiểu dữ liệu này ñể khai báo các biến một cách ngắn gọn như sau:
KieuNgay ngay_batdau, ngay_kethuc;
Chúng ta có thể kết hợp định nghĩa cấu trúc với từ khố typedef để ñịnh nghĩa kiểu dữ liệu cấu trúc theo mẫu sau:
typdef struct [Tên] {
<Kiểu 1> <Tên thành phần 1>; <Kiểu 2> <Tên thành phần 2>; ...
} <danh sách tên kiểu>;
Với cách này, tên cấu trúc có thể có, có thể khơng. Ví dụ sau ñịnh nghĩa kiểu KieuNgay kết hợp với ñịnh nghĩa cấu trúc theo hai cách:
Cách 1: có tên cấu trúc:
typedef struct Ngay {
int ngay; int thang; int nam; } KieuNgay;
Cách 2: khơng có tên cấu trúc:
typedef struct { int ngay; int thang; int nam; } KieuNgay;
Khác biệt của hai cách này là ở chỗ: với cách 1, chúng ta có thể sử dụng kiểu dữ liệu là struct Ngay hoặc KieuNgay, còn với cách 2 thì chúng ta chỉ có kiểu dữ liêu KieuNgay.