Lập trình căn bản - Chương 9: Kiểu cấu trúc
Bạn đang xem tài liệu "Lập trình căn bản - Chương 9: Kiểu cấu trúc", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Tài liệu đính kèm:
- lap_trinh_can_ban_chuong_9_kieu_cau_truc.ppt
Nội dung text: Lập trình căn bản - Chương 9: Kiểu cấu trúc
- LẬP TRÌNH CĂN BẢN Phần 2 - Chương 9 KIỂU CẤU TRÚC N.C. Danh 1
- Nội dung chương này ⚫ Kiểu cấu trúc trong C ⚫ Các thao tác trên biến kiểu cấu trúc ⚫ Con trỏ và cấu trúc 2
- Kiểu cấu trúc trong C ⚫ Khái niệm ⚫ Định nghĩa kiểu cấu trúc ⚫ Khai báo biến cấu trúc 3
- Khái niệm ⚫ Kiểu cấu trúc (struct) là kiểu dữ liệu bao gồm nhiều thành phần có kiểu khác nhau, mỗi thành phần được gọi là một trường (field) ⚫ Nó khác với kiểu mảng (nơi mà các phần tử có cùng kiểu) ⚫ Ví dụ: 1 struct: 1 mảng: 4
- Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (1) ⚫ Cách 1: struct { struct SinhVien{ ; char MSSV[10]; char HoTen[40]; ; struct NgayThang NgaySinh; int Phai; ; char DiaChi[40]; }; } [biến 1, biến 2]; Khaibáo biến: Ví dụ: struct NgayThang NgaySinh; struct NgayThang{ struct SinhVien SV; unsigned char Ngay; unsigned char Thang; unsigned int Nam; struct tên_biến; }; 5
- Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (2) ⚫ Chú ý: ⚫ struct không tên: A và B là các struct có 2 thành phần x và y. struct này không có tên, nên ngoài A và B, ta không thể định nghĩa thêm các biến khác được. ⚫ Tuy nhiên A và B là các biến có kiểu struct point. Sau này ta có thể khai báo thêm các biến khác có kiểu struct point 6 này.
- Định nghĩa kiểu cấu trúc + Khai báo biến cấu trúc (3) ⚫ Cách 2: typedef struct { typedef struct{ ; char MSSV[10]; char HoTen[40]; ; NgayThang NgaySinh; int Phai; ; char DiaChi[40]; } SinhVien; } ; Khai báo biến: Ví dụ: typedef struct{ unsigned char Ngay; NgayThang NgaySinh; unsigned char Thang; SinhVien SV; unsigned int Nam; tên_biến; } NgayThang; 7
- Các thao tác trên biến kiểu cấu trúc ⚫ Truy xuất đến từng trường của biến cấu trúc ⚫ Khởi tạo cấu trúc 8
- Truy xuất đến từng trường (field) của biến cấu trúc (1) ⚫ Cú pháp: . ⚫ Ví dụ 1: Chương trình cho phép đọc dữ liệu từ bàn phím cho biến mẩu tin SinhVien và in biến mẩu tin đó lên màn hình: 9
- Truy xuất đến từng trường (field) của biến cấu trúc (2) 10
- Truy xuất đến từng trường (field) của biến cấu trúc (3) ⚫ Kết quả của 1 lần nhập: 11
- Truy xuất đến từng trường (field) của biến cấu trúc (4) ⚫ Lưu ý: ⚫ Các biến cấu trúc có thể gán cho nhau ⚫ Ví dụ: s=SV; // gán để lấy giá trị toàn bộ cấu trúc ⚫ Ta không thể thực hiện được các thao tác sau đây cho biến cấu trúc: ⚫ Sử dụng các hàm xuất nhập trên biến cấu trúc ⚫ Các phép toán quan hệ, các phép toán số học và logic 12
- Khởi tạo cấu trúc ⚫ Biến cấu trúc có thể được khởi tạo giá trị ban đầu lúc khai báo ⚫ Ví dụ: struct NgayThang NgaySinh ={29, 8, 1986}; 13
- Con trỏ và cấu trúc ⚫ Khai báo ⚫ Sử dụng các con trỏ kiểu cấu trúc ⚫ Truy cập các thành phần của cấu trúc đang được quản lý bởi con trỏ 14
- Khai báo (1) ⚫ Cú pháp: struct * ; ⚫ Ví dụ 1: struct NgayThang *p; hoặc NgayThang *p; // Nếu có dùng typedef 15
- Khai báo (2) ⚫ Ví dụ 2: ⚫ Truy cập đến các trường: ⚫ Nếu dùng con trỏ thì: 16
- Sử dụng các con trỏ kiểu cấu trúc ⚫ Có 2 cách: ⚫ Phải cấp phát bộ nhớ cho nó ⚫ Cho nó chỉ vào (chứa địa chỉ) biến đang tồn tại ⚫ Ví dụ: struct NgayThang *p; p=(struct NgayThang *)malloc(sizeof(struct NgayThang)); p->Ngay=29; p->Thang=8; p->Nam=1986; Hoặc struct NgayThang Ngay = {29,8,1986}; p = &Ngay; 17
- Truy cập các thành phần của cấu trúc đang được quản lý bởi con trỏ (1) ⚫ Với khai báo sau: struct NgayThang *p; ⚫ Ta có thể truy cập đến các trường của nó như sau: p->Ngay p->Thang hoặc (*p).Ngay (*p).Thang 18
- Truy cập các thành phần của cấu trúc đang được quản lý bởi con trỏ (3) ⚫ Ví dụ 19
- Hết chương 20