CHƯƠNG 8 : KIỂU DỮ LIỆU CẤU TRÚC
8.2. Khai báo cấu trúc
- Để tạo ra một kiểu cấu trúc người sử dụng cần phải khai báo tên của kiểu (là một tên gọi do người sử dụng tự đặt), tên cùng với các thành phần dữ liệu có trong kiểu cấu trúc này.
Một kiểu cấu trúc được khai báo theo mẫu sau:
struct <Tên cấu trúc>
{
<Kiểu dữ liệu 1> <Tên thuộc tính 1>;
<Kiểu dữ liệu 2> <Tên thuộc tính 2>; …
<Kiểu dữ liệu n> <Tên thuộc tính n>;
};
Trong đó:
142 <Tên cấu trúc>: là tên do người dùng tự định nghĩa, tuân thủ theo quy tắc đặt
tên biến trong C++. Tên này sẽ trở thành tên của kiểu dữ liệu có cấu trúc tương ứng.
<Thuộc tính>: mỗi thuộc tính của cấu trúc được khai báo như khai báo một biến thuộc kiểu dữ liệu thơng thường, gồm có kiểu dữ liệu và tên biến tương ứng. Mỗi khai báo thuộc tính phải kết thúc bằng dấu chấm phẩy “;” như một câu lệnh C++ thông thường.
Khai báo biến kiểu cấu trúc cũng giống như khai báo các biến kiểu cơ sở dưới dạng: <tên cấu trúc> <danh sách biến> ;
Các biến được khai báo cũng có thể đi kèm khởi tạo: <tên cấu trúc> biến = {giá trị khởi tạo } ;
Ví dụ 8.1: Khai báo cấu trúc có tên ”Tenhanvien” gồm mã số, họ tên, lương có thể viết như sau:
struct Tenhanvien { int maso; char hoten[30]; float luong; }; hoặc:
struct Tenhanvien {int maso; char hoten[30]; float luong;}
Ví dụ 8.2: Khai báo cấu trúc Date gồm ngày (day), tháng (month), năm (year). struct Date { int day ; int month; int year; }; nghihe = { 1, 6, 2019 } ;
Một biến nghihe (nghỉ hè) cũng được khai báo kèm cùng kiểu này và được khởi tạo (các giá trị khởi tạo này lần lượt gán cho các thành phần theo đúng thứ tự trong khai báo, tức day = 1, month = 6 và year = 2019.
143 Ví dụ 8.3: Khai báo cấu trúc Sinhvien gồm có các trường hoten (họ tên), ns (ngày sinh), gt(giới tính) dưới dạng số (qui ước 1: nam, 2: nữ), diem (điểm).
struct Sinhvien { char hoten[25] ; ngaythang ns; int gt; float diem ; } x, *p, TIN12[30];
Khai báo cùng với cấu trúc Sinhvien có các biến x, con trỏ p và mảng TIN12 với 30 phần tử kiểu Sinhvien.
Ví dụ 8.4: Khai báo cấu trúc có tên Books struct Books { char tieude[50]; char tacgia[50]; char chude[100]; int book_id; }; Ví dụ 8.5:
Khai báo kiểu cấu trúc chứa phân số gồm 2 thành phần nguyên chứa tử số và mẫu số. struct Phanso { int tu ; int mau ; } ; hoặc:
144